]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - nptl/sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S
2.5-18.1
[thirdparty/glibc.git] / nptl / sysdeps / unix / sysv / linux / sparc / sparc32 / pt-vfork.S
index 55229c9e665c4582c5b7f256ea23816f1a492e34..fb01242b531bfe9275fd7a68a5f935839e9bdbe4 100644 (file)
@@ -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)