diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/s390/s390-32/clone.S')
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-32/clone.S | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/clone.S b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S index cb2afbb8d1..73ccc288a0 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/clone.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2000-2016 Free Software Foundation, Inc. +/* Copyright (C) 2000-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). @@ -54,20 +54,16 @@ error: PSEUDO_END (__clone) thread_start: - tmh %r3,1 /* CLONE_THREAD == 0x00010000 */ - jne 1f - lhi %r2,-1 - tml %r3,256 /* CLONE_VM == 0x00000100 */ - jne 2f - svc SYS_ify(getpid) -2: ear %r3,%a0 - st %r2,PID(%r3) - st %r2,TID(%r3) -1: + cfi_startproc + /* Mark r14 as undefined in order to stop unwinding here! */ + cfi_undefined (r14) /* fn is in gpr 1, arg in gpr 0 */ lr %r2,%r0 /* set first parameter to void *arg */ ahi %r15,-96 /* make room on the stack for the save area */ xc 0(4,%r15),0(%r15) basr %r14,%r1 /* jump to fn */ DO_CALL (exit, 1) + cfi_endproc + +libc_hidden_def (__clone) weak_alias (__clone, clone) |