aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads/sysdeps/unix/sysv/linux/sparc
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-01-15 01:23:02 +0000
committerUlrich Drepper <drepper@redhat.com>2003-01-15 01:23:02 +0000
commit574b892ef1054ea999a136b3cb2321a65e3f1a17 (patch)
tree4457b51f3d0318c24de35da02ce2d90ac818beb8 /linuxthreads/sysdeps/unix/sysv/linux/sparc
parent086311a933ff53f8c064d833e69fe228bc7e8886 (diff)
downloadglibc-574b892ef1054ea999a136b3cb2321a65e3f1a17.tar
glibc-574b892ef1054ea999a136b3cb2321a65e3f1a17.tar.gz
glibc-574b892ef1054ea999a136b3cb2321a65e3f1a17.tar.bz2
glibc-574b892ef1054ea999a136b3cb2321a65e3f1a17.zip
Update.
2003-01-14 Guido Guenther <agx@sigxcpu.org> * sysdeps/unix/sysv/linux/mips/sysdep.h (INTERNAL_SYSCALL, INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO, INTERNAL_SYSCALL_ERROR_P, INLINE_SYSCALL): Define. 2003-01-14 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (INTERNAL_SYSCALL): Make use of ERR parameter. (INTERNAL_SYSCALL_DECL, INTERNAL_SYSCALL_ERRNO, INTERNAL_SYSCALL_ERROR_P): Adjust accordingly. (INLINE_SYSCALL): Make use of INTERNAL_SYSCALL. * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: New file. Patch by Denis Zaitsev <zzz@cd-club.ru>. that %eax is modified. Reported by Denis Zaitsev <zzz@cd-club.ru>.
Diffstat (limited to 'linuxthreads/sysdeps/unix/sysv/linux/sparc')
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S9
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S10
2 files changed, 19 insertions, 0 deletions
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
index adf7b220be..9378bd8522 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
+++ b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
@@ -23,7 +23,11 @@
ENTRY(__vfork)
ld [%g6 + MULTIPLE_THREADS_OFFSET], %o0
cmp %o0, 0
+#ifdef SHARED
bne HIDDEN_JUMPTARGET(__fork)
+#else
+ bne 1f
+#endif
mov __NR_vfork, %g1
ta 0x10;
bcs __syscall_error_handler
@@ -31,6 +35,11 @@ ENTRY(__vfork)
sub %o1, 1, %o1
retl
and %o0, %o1, %o0
+#ifndef SHARED
+1: mov %o7, %g1
+ call HIDDEN_JUMPTARGET(__fork)
+ mov %g1, %o7
+#endif
SYSCALL_ERROR_HANDLER
PSEUDO_END (__vfork)
libc_hidden_def (__vfork)
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
index e4ea9180cf..bcfcedfc2d 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
+++ b/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
@@ -22,7 +22,12 @@
.text
ENTRY(__vfork)
ld [%g6 + MULTIPLE_THREADS_OFFSET], %o0
+#ifdef SHARED
+ cmp %o0, 0
bne HIDDEN_JUMPTARGET (__fork)
+#else
+ brnz,pn %o0, 1f
+#endif
mov __NR_vfork, %g1
ta 0x6d
bcs,pn %xcc, __syscall_error_handler
@@ -30,6 +35,11 @@ ENTRY(__vfork)
sub %o1, 1, %o1
retl
and %o0, %o1, %o0
+#ifndef SHARED
+1: mov %o7, %g1
+ call HIDDEN_JUMPTARGET(__fork)
+ mov %g1, %o7
+#endif
SYSCALL_ERROR_HANDLER
PSEUDO_END (__vfork)
libc_hidden_def (__vfork)