From 873fa5beccbb4e95d1bbb9afb6a0eec02811f09b Mon Sep 17 00:00:00 2001 From: Vineet Gupta Date: Fri, 25 Jul 2014 17:39:05 +0530 Subject: NPTL: ARC support Signed-off-by: Vineet Gupta Signed-off-by: Bernhard Reutner-Fischer --- libc/sysdeps/linux/arc/vfork.S | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'libc/sysdeps/linux/arc/vfork.S') diff --git a/libc/sysdeps/linux/arc/vfork.S b/libc/sysdeps/linux/arc/vfork.S index 11959b66b..573a29f26 100644 --- a/libc/sysdeps/linux/arc/vfork.S +++ b/libc/sysdeps/linux/arc/vfork.S @@ -16,12 +16,25 @@ #define CLONE_FLAGS_FOR_VFORK (CLONE_VM|CLONE_VFORK|SIGCHLD) ENTRY(__vfork) +#ifdef SAVE_PID + THREAD_SELF r1 ; Get to struct pthread (just before TCB) + ld r2, [r1, PTHREAD_PID] + neg.f r3, r2 + bset.z r3, r3, 31 + st r3, [r1, PTHREAD_PID] +#endif mov r0, CLONE_FLAGS_FOR_VFORK mov_s r1, sp mov r8, __NR_clone ARC_TRAP_INSN cmp r0, 0 +#ifdef RESTORE_PID + bz 1f ; child continues + THREAD_SELF r1 ; Get to struct pthread (just before TCB) + st r2, [r1, PTHREAD_PID] +1: +#endif jge [blink] ; pid >=0 return, else detour via tailcall to errno b __syscall_error -- cgit v1.2.3