diff options
author | Christopher Faylor <me@cgf.cx> | 2000-02-17 19:39:52 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2000-02-17 19:39:52 +0000 |
commit | 8a0efa53e44919bcf5ccb1d3353618a82afdf8bc (patch) | |
tree | 68c3dbf3f2c6fd5d49777def9914d77b5cd4589d /newlib/libc/sys/sysnecv850/crt0.S | |
parent | 1fd5e000ace55b323124c7e556a7a864b972a5c4 (diff) | |
download | cygnal-8a0efa53e44919bcf5ccb1d3353618a82afdf8bc.tar.gz cygnal-8a0efa53e44919bcf5ccb1d3353618a82afdf8bc.tar.bz2 cygnal-8a0efa53e44919bcf5ccb1d3353618a82afdf8bc.zip |
import newlib-2000-02-17 snapshot
Diffstat (limited to 'newlib/libc/sys/sysnecv850/crt0.S')
-rw-r--r-- | newlib/libc/sys/sysnecv850/crt0.S | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/newlib/libc/sys/sysnecv850/crt0.S b/newlib/libc/sys/sysnecv850/crt0.S new file mode 100644 index 000000000..15d94dc3c --- /dev/null +++ b/newlib/libc/sys/sysnecv850/crt0.S @@ -0,0 +1,77 @@ +# NEC V850 startup code + + .section .text + .global _start + +_start: + +#if defined __v850e__ || defined __v850ea__ + + movea 255, r0, r20 + mov 65535, r21 + mov hilo(_stack), sp + mov hilo(__ep), ep + mov hilo(__gp), gp + mov hilo(__ctbp), r6 + ldsr r6, ctbp + mov hilo(_edata), r6 + mov hilo(_end), r7 +.L0: + st.w r0, 0[r6] + addi 4, r6, r6 + cmp r7, r6 + bl .L0 +.L1: + jarl ___main, r31 + addi -12, sp, sp + mov 0, r6 + mov 0, r7 + mov 0, r8 + jarl _main, r31 + mov r10, r6 + jarl _exit, r31 + +# else + movea 255, r0, r20 + mov r0, r21 + ori 65535, r0, r21 + movhi hi(_stack), r0, sp + movea lo(_stack), sp, sp + movhi hi(__ep), r0, ep + movea lo(__ep), ep, ep + movhi hi(__gp), r0, gp + movea lo(__gp), gp, gp + + /* Initialise the call table base pointer. + We do this even though we are supposedly + assembling this file for the v850 as this + allows us to use the same binary for all + versions of the v850 architecture. */ + + movhi hi(__ctbp), r0, r6 + movea lo(__ctbp), r6, r6 + ldsr r6, ctbp + + movhi hi(_edata), r0, r6 + movea lo(_edata), r6, r6 + movhi hi(_end), r0, r7 + movea lo(_end), r7, r7 +.L0: + st.b r0, 0[r6] + addi 1, r6, r6 + cmp r7, r6 + bl .L0 +.L1: + jarl ___main, r31 + addi -12, sp, sp + mov 0, r6 + mov 0, r7 + mov 0, r8 + jarl _main, r31 + mov r10, r6 + jarl _exit, r31 + +# endif + + .section .stack +_stack: .long 1 |