summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/alpha/wait4.S
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1998-02-26 17:17:05 +0000
committerUlrich Drepper <drepper@redhat.com>1998-02-26 17:17:05 +0000
commitef030f7f43b87b4bb553fd33e526f5cda6777c7f (patch)
treeb325fa413a93222995979e9997369252baf67f58 /sysdeps/unix/sysv/linux/alpha/wait4.S
parenta588b67da48d54f30ae101cf5d2e9fb0778f95a4 (diff)
1998-02-24 08:10 H.J. Lu <hjl@gnu.org> * sysdeps/unix/sysv/linux/alpha/bits/signum.h (_NSIG): Changed to 64. * sysdeps/unix/alpha/sysdep.S (_errno): Add in addition to __errno. * sysdeps/alpha/s_fabs.S: Added ".set noat"/".set at". * sysdeps/unix/sysv/linux/alpha/wait4.S: Ditto. * sysdeps/unix/make-syscalls.sh: Make versioned symbols only for shared library. * libc.map (adjtime, __adjtimex, adjtimex): Added for GLIBC_2.1. * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Added adjtimex and old_adjtimex. * sysdeps/unix/sysv/linux/alpha/syscalls.list (old_adjtimex): New. (osf_settimeofday, osf_getitimer, osf_setitimer, osf_utimes, osf_getrusage, osf_wait4): Added __xxxx symbol for GLIBC_2.0. * sysdeps/unix/sysv/linux/alpha/getitimer.S: Make versioned symbols only for shared library. * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise. * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise. * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise. * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise. * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise. * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise. * sysdeps/unix/sysv/linux/alpha/getitimer.S: Fix ENOSYS branch. * sysdeps/unix/sysv/linux/alpha/getrusage.S: Likewise. * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Likewise. * sysdeps/unix/sysv/linux/alpha/select.S: Likewise. * sysdeps/unix/sysv/linux/alpha/setitimer.S: Likewise. * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Likewise. * sysdeps/unix/sysv/linux/alpha/utimes.S: Likewise. * sysdeps/unix/sysv/linux/alpha/wait4.S: Likewise. * sysdeps/unix/sysv/linux/alpha/wait4.S: Check the correct rusage pointer. * sysdeps/unix/sysv/linux/adjtime.c (TIMEVAL, TIMEX, ADJTIMEX): New macros. (__adjtime): Use TIMEVAL, TIMEX and ADJTIMEX instead of timeval, timex and __adjtimex, respectively. * sysdeps/unix/sysv/linux/alpha/adjtime.c: New. * sysdeps/unix/sysv/linux/alpha/adjtimex.S: New.
Diffstat (limited to 'sysdeps/unix/sysv/linux/alpha/wait4.S')
-rw-r--r--sysdeps/unix/sysv/linux/alpha/wait4.S20
1 files changed, 16 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/alpha/wait4.S b/sysdeps/unix/sysv/linux/alpha/wait4.S
index 5ab86077c8..334836f5aa 100644
--- a/sysdeps/unix/sysv/linux/alpha/wait4.S
+++ b/sysdeps/unix/sysv/linux/alpha/wait4.S
@@ -32,7 +32,13 @@
.text
-LEAF(__wait4_tv64, 32)
+#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+#define WAIT4 __wait4_tv64
+#else
+#define WAIT4 __wait4
+#endif
+
+LEAF(WAIT4, 32)
ldgp gp, 0(pv)
subq sp, 32, sp
#ifdef PROF
@@ -64,7 +70,7 @@ LEAF(__wait4_tv64, 32)
/* If we didn't get ENOSYS, it is a real error. */
.align 3
$err64: cmpeq v0, ENOSYS, t0
- bne t0, $error
+ beq t0, $error
stl t0, __libc_missing_axp_tv64
/* Recover the saved arguments. */
@@ -79,7 +85,7 @@ $do32: ldi v0, SYS_ify(osf_wait4)
bne a3, $error
/* Copy back to proper format. */
- ldq a3, 8(sp)
+ ldq a3, 24(sp)
beq a3, 2f
ldl t0, 0(a3) # ru_utime.tv_sec
ldl t1, 4(a3) # ru_utime.tv_usec
@@ -98,6 +104,7 @@ $do32: ldi v0, SYS_ify(osf_wait4)
ldt $f25, 96(a3) # ru_msgrcv
ldt $f26, 104(a3) # ru_nsignals
ldt $f27, 112(a3) # ru_nvcsw
+ .set noat
ldt $f28, 120(a3) # ru_nivcsw
stq t0, 0(a3)
stq t1, 8(a3)
@@ -117,6 +124,7 @@ $do32: ldi v0, SYS_ify(osf_wait4)
stt $f26, 120(a3)
stt $f27, 128(a3)
stt $f28, 136(a3)
+ .set at
2: addq sp, 32, sp
ret
@@ -127,8 +135,9 @@ $error:
addq sp, 32, sp
jmp zero, (pv), __syscall_error
-END(__wait4_tv64)
+END(WAIT4)
+#if defined HAVE_ELF && defined PIC && defined DO_VERSIONING
default_symbol_version (__wait4_tv64, __wait4, GLIBC_2.1)
/* It seems to me to be a misfeature of the assembler that we can only
@@ -136,3 +145,6 @@ default_symbol_version (__wait4_tv64, __wait4, GLIBC_2.1)
The 'p' is for 'public'. *Shrug* */
strong_alias (__wait4_tv64, __wait4_tv64p)
default_symbol_version (__wait4_tv64p, wait4, GLIBC_2.1)
+#else
+weak_alias (__wait4, wait4)
+#endif