1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- /* Startup code compliant to the ELF CRIS ABI */
- #include <features.h>
- .syntax no_register_prefix
- /* The first piece of initialized data. */
- .data
- .global __data_start
- .align 2
- .type __data_start, @object
- .size __data_start, 4
- __data_start:
- .dword 0
- .text
- .align 1
- .global _start
- .type _start, %function
- #if defined(__UCLIBC_CTOR_DTOR__)
- .type _init, %function
- .type _fini, %function
- #else
- .weak _init
- .weak _fini
- #endif
- .type main, %function
- .type __uClibc_main, %function
- /*
- * On the stack we have argc. We can calculate argv/envp
- * from that and the succeeding stack location, but fix so
- * we get the right calling convention (regs in r10/r11).
- *
- * Please view linux/fs/binfmt_elf.c for a complete
- * understanding of this.
- */
- /*
- * Need to call __uClibc_main(main, argc, argv, _init, _fini)
- */
- _start:
- move.d main, r10
- move.d [sp+], r11
- move.d sp, r12
- subq 4, sp
- move srp, [sp]
- subq 4, sp
- move.d _fini, r13
- move.d r13, [sp]
- move.d _init, r13
- /* Leave control to the libc */
- jsr __uClibc_main
- nop
- .size _start, .-_start
|