From: Ulrich Drepper Date: Sat, 21 Dec 2002 18:36:32 +0000 (+0000) Subject: (_start): Optimise a little. Push stack top as seventh arg to X-Git-Tag: glibc-2.16-ports-before-merge~1504 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a16ce997aa0b6778b9689a49f28dff0da4b7599a;p=thirdparty%2Fglibc.git (_start): Optimise a little. Push stack top as seventh arg to __libc_start_main. --- diff --git a/sysdeps/arm/elf/start.S b/sysdeps/arm/elf/start.S index 90a62f6d9a5..13d4229b3b3 100644 --- a/sysdeps/arm/elf/start.S +++ b/sysdeps/arm/elf/start.S @@ -45,26 +45,34 @@ .globl _start .type _start,#function _start: + /* Fetch address of fini */ + ldr ip, =__libc_csu_fini + /* Clear the frame pointer since this is the outermost frame. */ mov fp, #0 /* Pop argc off the stack and save a pointer to argv */ - ldmfd sp!, {a2} + ldr a2, [sp], #4 mov a3, sp - /* Push the last arguments to main() onto the stack */ - stmfd sp!, {a1} - ldr a1, =__libc_csu_fini - stmfd sp!, {a1} + /* Push stack limit */ + str a3, [sp, #-4]! + + /* Push rtld_fini */ + str a1, [sp, #-4]! - /* Set up the other arguments for main() that go in registers */ + /* Set up the other arguments in registers */ ldr a1, =main ldr a4, =__libc_csu_init - /* __libc_start_main (main, argc, argv, init, fini, rtld_fini) */ + /* Push fini */ + str ip, [sp, #-4]! + + /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, stack_end) */ /* Let the libc call main and exit with its return code. */ bl __libc_start_main + /* should never get here....*/ bl abort