mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-27 07:20:11 +00:00
2003-03-10 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Don't clobber R7. Copy extra params for NPTL to registers used in clone syscall.
This commit is contained in:
parent
c915e5ad56
commit
4fba8a3b3d
@ -28,7 +28,8 @@
|
|||||||
all the freaky stuff we have to do to make the call useful. */
|
all the freaky stuff we have to do to make the call useful. */
|
||||||
|
|
||||||
/* int [r3] clone(int (*fn)(void *arg) [r3], void *child_stack [r4],
|
/* int [r3] clone(int (*fn)(void *arg) [r3], void *child_stack [r4],
|
||||||
int flags [r5], void *arg [r6]); */
|
int flags [r5], void *arg [r6], void *parent_tid [r7],
|
||||||
|
void *tls [r8], void *child_tid [r9]); */
|
||||||
|
|
||||||
ENTRY (BP_SYM (__clone))
|
ENTRY (BP_SYM (__clone))
|
||||||
/* GKM FIXME: add bounds checks, where sensible. */
|
/* GKM FIXME: add bounds checks, where sensible. */
|
||||||
@ -37,8 +38,8 @@ ENTRY (BP_SYM (__clone))
|
|||||||
|
|
||||||
/* Check for child_stack == NULL || fn == NULL. */
|
/* Check for child_stack == NULL || fn == NULL. */
|
||||||
cmpdi cr0,r4,0
|
cmpdi cr0,r4,0
|
||||||
ld r7,0(r3)
|
ld r0,0(r3)
|
||||||
cmpdi cr1,r7,0
|
cmpdi cr1,r0,0
|
||||||
cror cr0*4+eq,cr1*4+eq,cr0*4+eq
|
cror cr0*4+eq,cr1*4+eq,cr0*4+eq
|
||||||
beq- cr0,L(badargs)
|
beq- cr0,L(badargs)
|
||||||
|
|
||||||
@ -61,6 +62,10 @@ ENTRY (BP_SYM (__clone))
|
|||||||
/* 'flags' argument is first parameter to clone syscall. (The other
|
/* 'flags' argument is first parameter to clone syscall. (The other
|
||||||
argument is the stack pointer, already in r4.) */
|
argument is the stack pointer, already in r4.) */
|
||||||
mr r3,r5
|
mr r3,r5
|
||||||
|
/* Move the parent_tid, child_tid and tls arguments. */
|
||||||
|
mr r5,r7
|
||||||
|
mr r6,r8
|
||||||
|
mr r7,r9
|
||||||
|
|
||||||
/* Do the call. */
|
/* Do the call. */
|
||||||
DO_CALL(SYS_ify(clone))
|
DO_CALL(SYS_ify(clone))
|
||||||
|
Loading…
Reference in New Issue
Block a user