summaryrefslogtreecommitdiff
path: root/linuxthreads/sysdeps/unix/sysv/linux/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads/sysdeps/unix/sysv/linux/powerpc')
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S13
1 files changed, 11 insertions, 2 deletions
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S b/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
index 17590059b6..e85f662b7e 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
+++ b/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
@@ -29,11 +29,20 @@
ENTRY (__vfork)
#ifdef __NR_vfork
-
- SINGLE_THREAD_P
# ifdef SHARED
+ mflr 9
+ bl _GLOBAL_OFFSET_TABLE_@local-4
+ mflr 10
+ mtlr 9
+ lwz 10,__libc_pthread_functions@got(10)
+ lwz 10,0(10)
+ cmpwi 10,0
bne- HIDDEN_JUMPTARGET(__fork)
# else
+ .weak __pthread_fork
+ lis 9,__pthread_fork@ha
+ la 9,__pthread_fork@l(9)
+ cmpwi 9,0
bne- .Lhidden_fork
# endif