From 480b36dbf384761928994f6f70711f8033732493 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 30 Dec 2005 06:54:32 +0000 Subject: Bug 616, Thomas Chou: update crt to new 0.9.28 uClibc style --- libc/sysdeps/linux/nios2/crt0.S | 64 ------------------------------------- libc/sysdeps/linux/nios2/crt1.S | 70 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 64 deletions(-) delete mode 100644 libc/sysdeps/linux/nios2/crt0.S create mode 100644 libc/sysdeps/linux/nios2/crt1.S (limited to 'libc/sysdeps/linux') diff --git a/libc/sysdeps/linux/nios2/crt0.S b/libc/sysdeps/linux/nios2/crt0.S deleted file mode 100644 index 95c9450cd..000000000 --- a/libc/sysdeps/linux/nios2/crt0.S +++ /dev/null @@ -1,64 +0,0 @@ -/* - * libc/sysdeps/linux/nios2/crt0.S -- entry point for linux/nios2 - * - * Copyright (C) 2004,05,06 Microtronix Datacom Ltd - * - * This file is subject to the terms and conditions of the GNU Lesser - * General Public License. See the file COPYING.LIB in the main - * directory of this archive for more details. - * - * Written by Wentao Xu - * - */ - -#include -#include - - .global _start - .type __start,@function - .weak _init - .weak _fini - .type __uClibc_start_main,@function - .type __h_errno_location, @function - .type _stdio_init, @function - .type _stdio_term, @function - .text - .balign 4 -_start: - nop - br 0f - .long _stext /* start address of .text + 4 */ - .long _etext /* start address of .data */ - .long _edata /* start address of .bss */ -0: - /* load gp */ - movhi gp, %hiadj(_gp) - addi gp, gp, %lo(_gp) - - /* load argc, argv, envp from stack */ - ldw r4, 0(sp) - ldw r5, 4(sp) - ldw r6, 8(sp) - - /* load the 4th arg */ - movhi r7, %hi(_init) - ori r7, r7, %lo(_init) - - /* reuse the argc stack slot for the 5th arg */ - movhi r8, %hi(_fini) - ori r8, r8, %lo(_fini) - stw r8, 0(sp) - - /* call uClibc_main, shouldn't return */ -#ifdef __PIC__ - /* just pray 16 bit offset is enough */ - br __uClibc_start_main -#else - call __uClibc_start_main -#endif - - /* crash in the event of return */ -__exit: - movui r2, TRAP_ID_SYSCALL - movui r3, __NR_exit - trap \ No newline at end of file diff --git a/libc/sysdeps/linux/nios2/crt1.S b/libc/sysdeps/linux/nios2/crt1.S new file mode 100644 index 000000000..948eeb1ed --- /dev/null +++ b/libc/sysdeps/linux/nios2/crt1.S @@ -0,0 +1,70 @@ +/* + * libc/sysdeps/linux/nios2/crt0.S -- entry point for linux/nios2 + * + * Copyright (C) 2004,05,06 Microtronix Datacom Ltd + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License. See the file COPYING.LIB in the main + * directory of this archive for more details. + * + * Written by Wentao Xu + * Updated by Thomas Chou for crt1.S + * + */ + +#include +#include + + .global _start + .type __start,@function + .weak _init + .weak _fini + .type main,@function + .type __uClibc_main,@function + .type __h_errno_location, @function + .type _stdio_init, @function + .type _stdio_term, @function + .text + .balign 4 +_start: + nop + br 0f + .long _stext /* start address of .text + 4 */ + .long _etext /* start address of .data */ + .long _edata /* start address of .bss */ +0: + /* load gp */ + movhi gp, %hiadj(_gp) + addi gp, gp, %lo(_gp) + + /* load main, argc, argv from stack */ + movhi r4, %hi(main) + ori r4, r4, %lo(main) /* main */ + ldw r5, 0(sp) /* argc */ + ldw r6, 4(sp) /* argv */ + + /* load the 4th arg */ + movhi r7, %hi(_init) + ori r7, r7, %lo(_init) + + /* reuse the argc stack slot for the 5th arg */ + movhi r8, %hi(_fini) + ori r8, r8, %lo(_fini) + stw r8, 0(sp) + + stw r2, 4(sp) /* rtld_fini */ + stw sp, 8(sp) /* stack_end */ + + /* call uClibc_main, shouldn't return */ +#ifdef __PIC__ + /* just pray 16 bit offset is enough */ + br __uClibc_main +#else + call __uClibc_main +#endif + + /* crash in the event of return */ +__exit: + movui r2, TRAP_ID_SYSCALL + movui r3, __NR_exit + trap -- cgit v1.2.3