summaryrefslogtreecommitdiffstats
path: root/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
diff options
context:
space:
mode:
authoraustinf <austinf@localhost>2009-03-19 07:29:30 +0000
committeraustinf <austinf@localhost>2009-03-19 07:29:30 +0000
commit2ea44632aac286a927069a1fb1f979db23c0b3c4 (patch)
tree405585f334c03e95c106924c03ed4642f80874a0 /libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
parentd38a60ef0325122761dea450cc163ac036d896e7 (diff)
downloaduClibc-alpine-2ea44632aac286a927069a1fb1f979db23c0b3c4.tar.bz2
uClibc-alpine-2ea44632aac286a927069a1fb1f979db23c0b3c4.tar.xz
sparc32 nptl functional
* pulled updated asm and headers from glibc for sparc32 * probably no cancellation support yet * no shared TLS relocs yet, since ldso is hosed on sparc still note: didn't use TARGET_SUBARCH method of includes since that would cause other parts of libc to fail currently. Will need to be fixed later.
Diffstat (limited to 'libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S')
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S15
1 files changed, 9 insertions, 6 deletions
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
index d804f0c4b..1a3827789 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
@@ -21,6 +21,7 @@
#include <tcb-offsets.h>
.text
+ .globl __syscall_error
ENTRY(__vfork)
ld [%g7 + PID], %o5
cmp %o5, 0
@@ -31,16 +32,18 @@ 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)
-hidden_def (__vfork)
+hidden_def (vfork)
weak_alias (__vfork, vfork)