|
|
|
@ -61,14 +61,13 @@ ENTRY(ia64_execve) |
|
|
|
|
* Allocate 8 input registers since ptrace() may clobber them |
|
|
|
|
*/ |
|
|
|
|
.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(8) |
|
|
|
|
alloc loc1=ar.pfs,8,2,4,0 |
|
|
|
|
alloc loc1=ar.pfs,8,2,3,0 |
|
|
|
|
mov loc0=rp |
|
|
|
|
.body |
|
|
|
|
mov out0=in0 // filename |
|
|
|
|
;; // stop bit between alloc and call
|
|
|
|
|
mov out1=in1 // argv |
|
|
|
|
mov out2=in2 // envp |
|
|
|
|
add out3=16,sp // regs |
|
|
|
|
br.call.sptk.many rp=sys_execve |
|
|
|
|
.ret0: |
|
|
|
|
cmp4.ge p6,p7=r8,r0 |
|
|
|
@ -76,7 +75,6 @@ ENTRY(ia64_execve) |
|
|
|
|
sxt4 r8=r8 // return 64-bit result |
|
|
|
|
;;
|
|
|
|
|
stf.spill [sp]=f0 |
|
|
|
|
(p6) cmp.ne pKStk,pUStk=r0,r0 // a successful execve() lands us in user-mode... |
|
|
|
|
mov rp=loc0 |
|
|
|
|
(p6) mov ar.pfs=r0 // clear ar.pfs on success |
|
|
|
|
(p7) br.ret.sptk.many rp |
|
|
|
|