diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/nios2/clone.S')
-rw-r--r-- | sysdeps/unix/sysv/linux/nios2/clone.S | 33 |
1 files changed, 5 insertions, 28 deletions
diff --git a/sysdeps/unix/sysv/linux/nios2/clone.S b/sysdeps/unix/sysv/linux/nios2/clone.S index 4da5c19a73..fd3be46645 100644 --- a/sysdeps/unix/sysv/linux/nios2/clone.S +++ b/sysdeps/unix/sysv/linux/nios2/clone.S @@ -1,5 +1,5 @@ /* clone() implementation for Nios II. - Copyright (C) 2008-2016 Free Software Foundation, Inc. + Copyright (C) 2008-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andrew Jenner <andrew@codesourcery.com>, 2008. @@ -25,9 +25,6 @@ #include <bits/errno.h> #include <tcb-offsets.h> -#define CLONE_VM 0x00000100 -#define CLONE_THREAD 0x00010000 - /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg, void *parent_tidptr, void *tls, void *child_tidptr) */ @@ -69,18 +66,6 @@ thread_start: cfi_startproc cfi_undefined (ra) - /* We expect the argument registers to be preserved across system - calls and across task cloning, so flags should be in r4 here. */ - andhi r2, r4, %hi(CLONE_THREAD) - bne r2, zero, 2f - andi r3, r4, CLONE_VM - movi r2, -1 - bne r3, zero, 3f - DO_CALL (getpid, 0) -3: - stw r2, PID_OFFSET(r23) - stw r2, TID_OFFSET(r23) -2: ldw r5, 4(sp) /* Function pointer. */ ldw r4, 0(sp) /* Argument pointer. */ addi sp, sp, 8 @@ -88,20 +73,12 @@ thread_start: /* Call the user's function. */ callr r5 - /* _exit with the result. */ - mov r4, r2 -#ifdef PIC - nextpc r22 -1: movhi r8, %hiadj(_gp_got - 1b) - addi r8, r8, %lo(_gp_got - 1b) - add r22, r22, r8 - ldw r8, %call(HIDDEN_JUMPTARGET(_exit))(r22) - jmp r8 -#else - jmpi _exit -#endif + /* exit with the result. */ + movi r2, SYS_ify (exit) + trap cfi_endproc cfi_startproc PSEUDO_END (__clone) +libc_hidden_def (__clone) weak_alias (__clone, clone) |