summaryrefslogtreecommitdiff
path: root/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S13
1 files changed, 8 insertions, 5 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S
index 55229c9e66..fb01242b53 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S
@@ -21,6 +21,7 @@
#include <tcb-offsets.h>
.text
+ .globl __syscall_error
ENTRY(__vfork)
ld [%g7 + PID], %o5
sub %g0, %o5, %o4
@@ -28,15 +29,17 @@ ENTRY(__vfork)
LOADSYSCALL(vfork)
ta 0x10
- bcs,a __syscall_error_handler
- st %o5, [%g7 + PID]
- SYSCALL_ERROR_HANDLER
- sub %o1, 1, %o1
+ bcc 2f
+ mov %o7, %g1
+ st %o5, [%g7 + PID]
+ call __syscall_error
+ mov %g1, %o7
+2: sub %o1, 1, %o1
andcc %o0, %o1, %o0
bne,a 1f
st %o5, [%g7 + PID]
1: retl
nop
+END(__vfork)
-PSEUDO_END (__vfork)
weak_alias (__vfork, vfork)