From e361ccd9992504d1b1b1f496f182dbfa0fdca643 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 21 Dec 2002 18:53:25 +0000 Subject: Update. 2002-12-20 Art Haas * sysdeps/gnu/siglist.c: Convert GCC extension initializer syntax to C99. 2002-12-21 Philip Blundell * sysdeps/arm/elf/start.S (_start): Optimise a little. Push stack top as seventh arg to __libc_start_main. Reported by paulnash@wildseed.com. * sysdeps/unix/sysv/linux/arm/clone.S: Small optimisation. * sysdeps/unix/sysv/linux/arm/sigcontextinfo.h: Elide compatibility cruft when new enough kernel is assumed. --- sysdeps/arm/elf/start.S | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'sysdeps/arm/elf') diff --git a/sysdeps/arm/elf/start.S b/sysdeps/arm/elf/start.S index 90a62f6d9a..13d4229b3b 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 -- cgit v1.2.3