]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - nptl/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
2.5-18.1
[thirdparty/glibc.git] / nptl / sysdeps / unix / sysv / linux / sparc / sparc64 / vfork.S
index d6b2455d4393f55036a049a502702b1e2b3979cb..55975743049bed71aea396699b9b6d5699b58bbb 100644 (file)
@@ -21,6 +21,7 @@
 #include <tcb-offsets.h>
 
        .text
+       .globl  __syscall_error
 ENTRY(__vfork)
        ld      [%g7 + PID], %o5
        sethi   %hi(0x80000000), %o3
@@ -31,16 +32,18 @@ ENTRY(__vfork)
 
        LOADSYSCALL(vfork)
        ta      0x6d
-       bcs,a,pn %xcc, __syscall_error_handler
-        st     %o5, [%g7 + PID]
-       SYSCALL_ERROR_HANDLER
-       sub     %o1, 1, %o1
+       bcc,pt  %xcc, 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,pt %icc, 1f
         st     %o5, [%g7 + PID]
 1:     retl
         nop
+END(__vfork)
 
-PSEUDO_END (__vfork)
 libc_hidden_def (__vfork)
 weak_alias (__vfork, vfork)