aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S8
1 files changed, 7 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S
index 97849a5b26..3bfd025984 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S
@@ -28,7 +28,8 @@
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 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))
/* GKM FIXME: add bounds checks, where sensible. */
@@ -59,6 +60,11 @@ ENTRY (BP_SYM (__clone))
argument is the stack pointer, already in r4.) */
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_CALL(SYS_ify(clone))