summaryrefslogtreecommitdiffstats
path: root/lib/csu/ia64/crt1.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csu/ia64/crt1.c')
-rw-r--r--lib/csu/ia64/crt1.c20
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;
OpenPOWER on IntegriCloud