summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/hppa/clone.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/hppa/clone.S')
-rw-r--r--sysdeps/unix/sysv/linux/hppa/clone.S12
1 files changed, 3 insertions, 9 deletions
diff --git a/sysdeps/unix/sysv/linux/hppa/clone.S b/sysdeps/unix/sysv/linux/hppa/clone.S
index 0a18137118..3d037f1430 100644
--- a/sysdeps/unix/sysv/linux/hppa/clone.S
+++ b/sysdeps/unix/sysv/linux/hppa/clone.S
@@ -133,19 +133,13 @@ ENTRY(__clone)
.LthreadStart:
# define CLONE_VM_BIT 23 /* 0x00000100 */
-# define CLONE_THREAD_BIT 15 /* 0x00010000 */
/* Load original clone flags.
- If CLONE_THREAD was passed, don't reset the PID/TID.
- If CLONE_VM was passed, we need to store -1 to PID/TID.
- If CLONE_VM and CLONE_THREAD were not set store the result
- of getpid to PID/TID. */
+ If CLONE_VM was passed, don't modify PID/TID.
+ Otherwise store the result of getpid to PID/TID. */
ldw -56(%sp), %r26
- bb,<,n %r26, CLONE_THREAD_BIT, 1f
- bb,< %r26, CLONE_VM_BIT, 2f
- ldi -1, %ret0
+ bb,<,n %r26, CLONE_VM_BIT, 1f
ble 0x100(%sr2, %r0)
ldi __NR_getpid, %r20
-2:
mfctl %cr27, %r26
stw %ret0, PID_THREAD_OFFSET(%r26)
stw %ret0, TID_THREAD_OFFSET(%r26)