diff options
author | Geoffrey Keating <geoffk@geoffk.org> | 2001-12-23 01:47:58 +0300 |
---|---|---|
committer | Geoffrey Keating <geoffk@geoffk.org> | 2001-12-23 01:47:58 +0300 |
commit | f6eff1c04649af4f2a18c434d9be2870c24cc668 (patch) | |
tree | ce025040088849a3c238acf2892ae64a14bf7727 /libgloss/xstormy16/crt0.s | |
parent | a3e320f3c9759b2ad6267daca68e24952f27d59c (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.s | 94 |
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 |