about summary refs log tree commit diff
path: root/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S')
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S9
1 files changed, 8 insertions, 1 deletions
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S
index efc9710d7b..d2faaa1c68 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S
+++ b/linuxthreads/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S
@@ -27,7 +27,14 @@
    and the process ID of the new process to the old process.  */
 
 ENTRY (__vfork)
-	SINGLE_THREAD_P
+#ifdef SHARED
+	larl	%r1,__libc_pthread_functions
+	lg	%r1,0(%r1)
+#else
+	.weak	__pthread_fork
+	larl	%r1,__pthread_fork
+#endif
+	ltgr	%r1,%r1
 	jgne	HIDDEN_JUMPTARGET(__fork)
 
 	/* Do vfork system call.  */