Change to track the new calling convention for execve. This version only

needs one line of assembler to initialise gp.
This commit is contained in:
Doug Rabson 2001-10-11 12:33:05 +00:00
parent f334c8bff7
commit 3749c9e54d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=84799

View File

@ -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;