Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@geoffk.org>2001-12-23 01:47:58 +0300
committerGeoffrey Keating <geoffk@geoffk.org>2001-12-23 01:47:58 +0300
commitf6eff1c04649af4f2a18c434d9be2870c24cc668 (patch)
treece025040088849a3c238acf2892ae64a14bf7727 /libgloss/xstormy16/crt0.s
parenta3e320f3c9759b2ad6267daca68e24952f27d59c (diff)
In newlib/:
2001-12-22 Geoffrey Keating <geoffk@redhat.com> Catherine Moore <clm@redhat.com> Richard Henderson <rth@redhat.com> Corinna Vinschen <vinschen@redhat.com> * configure.host: Add support for xstormy16. * libc/include/machine/ieeefp.h: Add support for xstormy16. * libc/include/machine/setjmp.h: Add support for xstormy16. * libc/include/sys/config.h: Add support for xstormy16. * libc/machine/xstormy16/Makefile.am: New file. * libc/machine/xstormy16/Makefile.in: New file. * libc/machine/xstormy16/aclocal.m4: New file. * libc/machine/xstormy16/configure: New file. * libc/machine/xstormy16/configure.in: New file. * libc/machine/xstormy16/setjmp.S: New file. In libgloss/: 2001-12-22 Geoffrey Keating <geoffk@redhat.com> Mark Salter <msalter@redhat.com> Catherine Moore <clm@redhat.com> Richard Henderson <rth@redhat.com> * configure.in: Add xstormy16. * libnosys/configure.in: Add xstormy16. * configure: Regenerated. * libnosys/configure: Regenerated. * xstormy16/Makefile.in: New file. * xstormy16/close.c: New file. * xstormy16/configure: New file. * xstormy16/configure.in: New file. * xstormy16/crt0.s: New file. * xstormy16/crt0_stub.s: New file. * xstormy16/crti.s: New file. * xstormy16/crtn.s: New file. * xstormy16/eva_app.c: New file. * xstormy16/eva_app.ld: New file. * xstormy16/eva_stub.ld: New file. * xstormy16/fstat.c: New file. * xstormy16/getpid.c: New file. * xstormy16/kill.c: New file. * xstormy16/lseek.c: New file. * xstormy16/open.c: New file. * xstormy16/sbrk.c: New file. * xstormy16/sim_high.ld: New file. * xstormy16/stat.c: New file. * xstormy16/syscalls.S: New file. * xstormy16/syscalls.m4: New file. * xstormy16/unlink.c: New file. * xstormy16/xstormy16_stub.c: New file.
Diffstat (limited to 'libgloss/xstormy16/crt0.s')
-rw-r--r--libgloss/xstormy16/crt0.s94
1 files changed, 94 insertions, 0 deletions
diff --git a/libgloss/xstormy16/crt0.s b/libgloss/xstormy16/crt0.s
new file mode 100644
index 000000000..28f8c8a8d
--- /dev/null
+++ b/libgloss/xstormy16/crt0.s
@@ -0,0 +1,94 @@
+# XSTORMY16 startup code
+
+# Interrupt vectors at 0x8000.
+ .section .int_vec,"ax"
+ .global _start
+ .align 1
+_start:
+ ;; Reset, watchdog timer interrupt
+ jmpf _int_reset
+ ;; base timer interrupt
+ jmpf _int_basetimer
+ ;; timer 0
+ jmpf _int_timer0
+ ;; timer 1
+ jmpf _int_timer1
+ ;; SIO0 interrupt
+ jmpf _int_sio0
+ ;; SIO1 interrupt
+ jmpf _int_sio1
+ ;; port0 interrupt
+ jmpf _int_port0
+ ;; port1 interrupt
+ jmpf _int_port1
+
+ .text
+# Reset code, set up memory and call main.
+_int_reset:
+ ;; Set up the stack pointer.
+ mov r0,#__stack
+ bz r0,#0,0f
+ mov sp,r0
+0:
+ ;; Zero the data space
+ mov r0,#_edata
+ mov r1,#_end
+ mov r2,#0
+0: mov.w (r0++),r2
+ blt r0,r1,0b
+ ;; Call hardware init routine
+ callf _hwinit
+ ;; Call initialization routines
+ callf _init
+ ;; Set up fini routines to be called from exit
+ mov r2,#@fptr(_fini)
+ callf atexit
+ ;; Call main() with empty argc/argv/envp
+ mov r2,#0
+ mov r3,#0
+ mov r4,#0
+ callf main
+ ;; Exit.
+ callf exit
+ ;; Should never reach this code.
+ halt
+1: .size _int_reset,1b-_int_reset
+
+# Stub interrupt routines.
+ .globl _int_timer0
+ .weak _int_timer0
+ .globl _int_timer1
+ .weak _int_timer1
+ .globl _int_sio0
+ .weak _int_sio0
+ .globl _int_sio1
+ .weak _int_sio1
+ .globl _int_port0
+ .weak _int_port0
+ .globl _int_port1
+ .weak _int_port1
+ .globl _int_basetimer
+ .weak _int_basetimer
+_int_timer0:
+_int_timer1:
+_int_sio0:
+_int_sio1:
+_int_port0:
+_int_port1:
+_int_basetimer:
+ iret
+1: .size _int_timer0,1b-_int_timer0
+
+# Stub hardware init
+ .globl _hwinit
+ .weak _hwinit
+_hwinit:
+ ret
+1: .size _int_hwinit,1b-_int_hwinit
+
+# The first word in .data has address 0, so it's not a good
+# idea to use it as its address conflicts with NULL.
+# Place a HALT instruction there to try to catch NULL pointer
+# dereferences.
+ .data
+ halt