diff options
Diffstat (limited to 'lib/csu/ia64/crt1.c')
-rw-r--r-- | lib/csu/ia64/crt1.c | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/lib/csu/ia64/crt1.c b/lib/csu/ia64/crt1.c index 16efd37..f8b02ab 100644 --- a/lib/csu/ia64/crt1.c +++ b/lib/csu/ia64/crt1.c @@ -60,25 +60,9 @@ extern int etext; char **environ; char *__progname = ""; -__asm (" - .text - .global _start - .proc _start -_start: - alloc r14=ar.pfs,0,0,3,0 ;; - mov out0=sp - mov out1=r14 - mov out2=r15 - mov r14=15 ;; - andcm sp=sp,r14 ;; - add sp=-16,sp - movl gp=_GLOBAL_OFFSET_TABLE_ - br.call.sptk rp=_start2 - .endp _start"); - /* The entry function. */ void -_start2(char **ap, +_start(char **ap, struct ps_strings *ps_strings, void (*cleanup)(void)) { @@ -86,6 +70,8 @@ _start2(char **ap, char **argv; char **env; + __asm __volatile("movl gp=_GLOBAL_OFFSET_TABLE_"); + argc = * (long *) ap; argv = ap + 1; env = ap + 2 + argc; |