about summary refs log tree commit diff
path: root/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S')
-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