]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
(_start): Optimise a little. Push stack top as seventh arg to
authorUlrich Drepper <drepper@redhat.com>
Sat, 21 Dec 2002 18:36:32 +0000 (18:36 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 21 Dec 2002 18:36:32 +0000 (18:36 +0000)
__libc_start_main.

sysdeps/arm/elf/start.S

index 90a62f6d9a5413ef9f6cc8294e1d92ddfddad650..13d4229b3b3999eea14d0c7f1f4c560925af6444 100644 (file)
        .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