123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- ;; Startup code compiant to the ELF CRIS ABI.
- ;;
- ;; Highly based on code from glibc.
- #include <sysdep.h>
- .syntax no_register_prefix
- .text
- .globl _start
- .type _start,@function
- #if defined L_crt0 || ! defined __UCLIBC_CTOR_DTOR__
- .type __uClibc_main,@function
- #else
- .weak _init
- .weak _fini
- .type __uClibc_start_main,@function
- #endif
- ;; Setup a dummy reference to main so that if an application is linking
- ;; when the main() function is in a static library we can be sure that
- ;; the main() actually gets linked in.
- .type main,@function
- _start:
- ;; Clear the frame pointer, to mark the outermost frame.
- moveq 0, r8
- move.d [sp],r11
- move.d sp,[sp]
- move.d sp,r12
- addq 4,r12
- push r9
- #ifdef __PIC__
- move.d pc,r0
- sub.d .:GOTOFF,r0
- move.d _init:PLTG,r13
- add.d r0,r13
- move.d _fini:PLTG,r9
- add.d r0,r9
- move.d main:PLTG,r10
- add.d r0,r10
- #else
- move.d _init,r13
- move.d _fini,r9
- move.d main,r10
- #endif
- push r9
- #if (defined L_crt1 || defined L_gcrt1) && defined __UCLIBC_CTOR_DTOR__
- PLTCALL(__uClibc_start_main)
- #else
- PLTCALL(__uClibc_main)
- #endif
- ;; Crash if 'exit' returns.
- test.d [6502]
- 0:
- ba 0b
- nop
-
- ;; Define a symbol for the first piece of initialized data.
- .data
- .globl __data_start
- __data_start:
- .long 0
- .weak data_start
- data_start = __data_start
|