123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #include "sysdep.h"
- #include <asm/errno.h>
- #define CHILD p8
- #define PARENT p9
- ENTRY(__clone2)
- .prologue
- alloc r2=ar.pfs,8,1,6,0
- cmp.eq p6,p0=0,in0
- cmp.eq p7,p0=0,in1
- mov r8=EINVAL
- mov out0=in3
- mov out1=in1
- (p6) br.cond.spnt.many __syscall_error
- (p7) br.cond.spnt.many __syscall_error
-
- mov out2=in2
- mov out3=in5
- mov out4=in7
- mov out5=in6
-
- mov r15=SYS_ify (clone2)
- .save rp, r0
- break __BREAK_SYSCALL
- .body
- cmp.eq p6,p0=-1,r10
- cmp.eq CHILD,PARENT=0,r8
- (p6) br.cond.spnt.many __syscall_error
-
- (CHILD) mov loc0=gp
- (PARENT) ret
-
- 1: ld8 out1=[in0],8
- mov out0=in4
-
- ld8 gp=[in0]
- mov b6=out1
- br.call.dptk.many rp=b6
-
- mov out0=r8
- mov gp=loc0
- .globl HIDDEN_JUMPTARGET(_exit)
- br.call.dpnt.many rp=HIDDEN_JUMPTARGET(_exit)
-
- ret
- PSEUDO_END(__clone2)
|