diff options
author | Richard Henderson <rth@twiddle.net> | 2012-05-30 11:13:33 -0700 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2012-05-30 11:14:24 -0700 |
commit | 1c37181459ddd2a3b201b2c49048aeb4258b7933 (patch) | |
tree | 92ec5564688581d10ec5b9c19491bb60b9e1bbc0 | |
parent | a88035b5fb970d4b47e22e6978704f94c7b46271 (diff) | |
download | glibc-1c37181459ddd2a3b201b2c49048aeb4258b7933.tar.gz glibc-1c37181459ddd2a3b201b2c49048aeb4258b7933.tar.xz glibc-1c37181459ddd2a3b201b2c49048aeb4258b7933.zip |
alpha: Purge __ASSUME_TIMEVAL64
-rw-r--r-- | ChangeLog.alpha | 19 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/adjtime.c | 147 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/getitimer.S | 112 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/getrusage.S | 148 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/gettimeofday.S | 119 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/kernel-features.h | 7 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/nptl/ld.abilist | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist | 18 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/select.S | 240 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/setitimer.S | 136 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/settimeofday.S | 117 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/syscalls.list | 12 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/utimes.S | 122 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/wait4.S | 155 |
14 files changed, 50 insertions, 1304 deletions
diff --git a/ChangeLog.alpha b/ChangeLog.alpha index 8096fb70d5..de1dc8ef9a 100644 --- a/ChangeLog.alpha +++ b/ChangeLog.alpha @@ -1,3 +1,22 @@ +2012-05-30 Richard Henderson <rth@twiddle.net> + + * sysdeps/unix/sysv/linux/alpha/adjtime.c: Remove __ASSUME_TIMEVAL64. + * sysdeps/unix/sysv/linux/alpha/getitimer.S: Remove file. + * sysdeps/unix/sysv/linux/alpha/getrusage.S: Remove file. + * sysdeps/unix/sysv/linux/alpha/gettimeofday.S: Remove file. + * sysdeps/unix/sysv/linux/alpha/select.S: Remove file. + * sysdeps/unix/sysv/linux/alpha/setitimer.S: Remove file. + * sysdeps/unix/sysv/linux/alpha/settimeofday.S: Remove file. + * sysdeps/unix/sysv/linux/alpha/utimes.S: Remove file. + * sysdeps/unix/sysv/linux/alpha/wait4.S: Remove file. + * sysdeps/unix/sysv/linux/alpha/syscalls.list (getitimer): New. + (getrusage, gettimeofday, select, setitimer): New. + (settimeofday, utimes, wait4): New. + * sysdeps/unix/sysv/linux/alpha/kernel-features.h: Remove + __ASSUME_TIMEVAL64. + * sysdeps/unix/sysv/linux/alpha/nptl/ld.abilist: Update. + * sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist: Update. + 2012-05-24 Richard Henderson <rth@twiddle.net> * sysdeps/unix/sysv/linux/alpha/nptl/ld.abilist: New file. diff --git a/sysdeps/unix/sysv/linux/alpha/adjtime.c b/sysdeps/unix/sysv/linux/alpha/adjtime.c index ce1d220c37..b8c9820203 100644 --- a/sysdeps/unix/sysv/linux/alpha/adjtime.c +++ b/sysdeps/unix/sysv/linux/alpha/adjtime.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998,2000,2002,2003,2004,2006 Free Software Foundation, Inc. +/* Copyright (C) 1998-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -18,9 +18,9 @@ #include <shlib-compat.h> #include <sysdep.h> #include <sys/time.h> -#include <kernel-features.h> -#if !defined __ASSUME_TIMEVAL64 || SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) + +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) struct timeval32 { int tv_sec, tv_usec; @@ -60,160 +60,35 @@ struct timex32 { #define ADJTIME attribute_compat_text_section __adjtime_tv32 #define ADJTIMEX(x) INLINE_SYSCALL (old_adjtimex, 1, x) #define ADJTIMEX32(x) INLINE_SYSCALL (old_adjtimex, 1, x) -#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) -#define LINKAGE -#else -#define LINKAGE static -#endif - -LINKAGE int ADJTIME (const struct TIMEVAL *itv, struct TIMEVAL *otv); #include <sysdeps/unix/sysv/linux/adjtime.c> -#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) -int -attribute_compat_text_section +int attribute_compat_text_section __adjtimex_tv32 (struct timex32 *tx) { return ADJTIMEX (tx); } + strong_alias (__adjtimex_tv32, __adjtimex_tv32_1); strong_alias (__adjtimex_tv32, __adjtimex_tv32_2); compat_symbol (libc, __adjtimex_tv32_1, __adjtimex, GLIBC_2_0); compat_symbol (libc, __adjtimex_tv32_2, adjtimex, GLIBC_2_0); compat_symbol (libc, __adjtime_tv32, adjtime, GLIBC_2_0); -#endif -#endif /* !__ASSUME_TIMEVAL64 || SHLIB_COMPAT */ +#endif /* SHLIB_COMPAT */ #undef TIMEVAL -#define TIMEVAL timeval #undef TIMEX -#define TIMEX timex +#undef ADJTIME #undef ADJTIMEX +#define TIMEVAL timeval +#define TIMEX timex #define ADJTIMEX(x) INLINE_SYSCALL (adjtimex, 1, x) -#undef LINKAGE -#undef ADJTIME -#if !defined __ASSUME_TIMEVAL64 -#define LINKAGE static -#define ADJTIME __adjtime_tv64 -#endif - #include <sysdeps/unix/sysv/linux/adjtime.c> -#include <stdbool.h> - -#if !defined __ASSUME_TIMEVAL64 -static bool missing_adjtimex; int -__adjtime (itv, otv) - const struct timeval *itv; - struct timeval *otv; -{ - struct timeval32 itv32, otv32; - int ret; - - switch (missing_adjtimex) - { - case false: - ret = __adjtime_tv64 (itv, otv); - if (ret && errno == ENOSYS) - missing_adjtimex = 1; - else - break; - - /* FALLTHRU */ - - default: - itv32.tv_sec = itv->tv_sec; - itv32.tv_usec = itv->tv_usec; - ret = __adjtime_tv32 (&itv32, &otv32); - if (ret == 0) - { - otv->tv_sec = otv32.tv_sec; - otv->tv_usec = otv32.tv_usec; - } - break; - } - - return ret; -} -#endif - -versioned_symbol (libc, __adjtime, adjtime, GLIBC_2_1); - -int -__adjtimex_tv64 (struct timex *tx) -{ -#if defined __ASSUME_TIMEVAL64 - return ADJTIMEX (tx); -#else - struct timex32 tx32; - int ret; - - switch (missing_adjtimex) - { - case false: - ret = ADJTIMEX (tx); - if (ret && errno == ENOSYS) - missing_adjtimex = 1; - else - break; - - /* FALLTHRU */ - - default: - tx32.modes = tx->modes; - tx32.offset = tx->offset; - tx32.freq = tx->freq; - tx32.maxerror = tx->maxerror; - tx32.esterror = tx->esterror; - tx32.status = tx->status; - tx32.constant = tx->constant; - tx32.precision = tx->precision; - tx32.tolerance = tx->tolerance; - tx32.time.tv_sec = tx->time.tv_sec; - tx32.time.tv_sec = tx->time.tv_usec; - tx32.tick = tx->tick; - tx32.ppsfreq = tx->ppsfreq; - tx32.jitter = tx->jitter; - tx32.shift = tx->shift; - tx32.stabil = tx->stabil; - tx32.jitcnt = tx->jitcnt; - tx32.calcnt = tx->calcnt; - tx32.errcnt = tx->errcnt; - tx32.stbcnt = tx->stbcnt; - - ret = ADJTIMEX32 (&tx32); - if (ret == 0) - { - tx->modes = tx32.modes; - tx->offset = tx32.offset; - tx->freq = tx32.freq; - tx->maxerror = tx32.maxerror; - tx->esterror = tx32.esterror; - tx->status = tx32.status; - tx->constant = tx32.constant; - tx->precision = tx32.precision; - tx->tolerance = tx32.tolerance; - tx->time.tv_sec = tx32.time.tv_sec; - tx->time.tv_usec = tx32.time.tv_sec; - tx->tick = tx32.tick; - tx->ppsfreq = tx32.ppsfreq; - tx->jitter = tx32.jitter; - tx->shift = tx32.shift; - tx->stabil = tx32.stabil; - tx->jitcnt = tx32.jitcnt; - tx->calcnt = tx32.calcnt; - tx->errcnt = tx32.errcnt; - tx->stbcnt = tx32.stbcnt; - } - break; - } - - return ret; -#endif -} +__adjtimex_tv64 (struct timex *tx) { return ADJTIMEX (tx); } strong_alias (__adjtimex_tv64, __adjtimex_internal); strong_alias (__adjtimex_tv64, __adjtimex_tv64p); weak_alias (__adjtimex_tv64, ntp_adjtime); versioned_symbol (libc, __adjtimex_tv64, __adjtimex, GLIBC_2_1); versioned_symbol (libc, __adjtimex_tv64p, adjtimex, GLIBC_2_1); +versioned_symbol (libc, __adjtime, adjtime, GLIBC_2_1); diff --git a/sysdeps/unix/sysv/linux/alpha/getitimer.S b/sysdeps/unix/sysv/linux/alpha/getitimer.S deleted file mode 100644 index 6b18937815..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/getitimer.S +++ /dev/null @@ -1,112 +0,0 @@ -/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ERRNO_H 1 -#include <bits/errno.h> -#include <kernel-features.h> - -.text - -#if defined PIC && defined DO_VERSIONING -#define GETITIMER __getitimer_tv64 -#else -#define GETITIMER getitimer -#endif - -#if defined __ASSUME_TIMEVAL64 -PSEUDO(GETITIMER, getitimer, 2) - ret -PSEUDO_END(GETITIMER) -#else -/* The problem here is that initially we made struct timeval compatible with - OSF/1, using int32. But we defined time_t with uint64, and later found - that POSIX requires tv_sec to be time_t. - - So now we have to do compatibility stuff. */ - -/* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. */ -.comm __libc_missing_axp_tv64, 4 - -LEAF(GETITIMER, 16) - ldgp gp, 0(pv) - subq sp, 16, sp -#ifdef PROF - .set noat - lda AT, _mcount - jsr AT, (AT), _mcount - .set at -#endif - .prologue 1 - - ldl t0, __libc_missing_axp_tv64 - - /* Save arguments in case we do need to fall back. */ - stq a0, 0(sp) - stq a1, 8(sp) - - bne t0, $do32 - - ldi v0, SYS_ify(getitimer) - callsys - bne a3, $err64 - - /* Everything ok. */ - addq sp, 16, sp - ret - - /* If we didn't get ENOSYS, it is a real error. */ - .align 3 -$err64: cmpeq v0, ENOSYS, t0 - beq t0, $error - stl t0, __libc_missing_axp_tv64 - - /* Recover the saved arguments. */ - ldq a1, 8(sp) - ldq a0, 0(sp) - - .align 3 -$do32: ldi v0, SYS_ify(osf_getitimer) - callsys - bne a3, $error - - /* Copy back to proper format. */ - ldq a1, 8(sp) - ldl t0, 0(a1) - ldl t1, 4(a1) - ldl t2, 8(a1) - ldl t3, 12(a1) - stq t0, 0(a1) - stq t1, 8(a1) - stq t2, 16(a1) - stq t3, 24(a1) - - addq sp, 16, sp - ret - - .align 3 -$error: - addq sp, 16, sp - SYSCALL_ERROR_HANDLER - -END(GETITIMER) -#endif /* __ASSUME_TIMEVAL64 */ - -#if defined PIC && defined DO_VERSIONING -default_symbol_version (__getitimer_tv64, getitimer, GLIBC_2.1) -#endif diff --git a/sysdeps/unix/sysv/linux/alpha/getrusage.S b/sysdeps/unix/sysv/linux/alpha/getrusage.S deleted file mode 100644 index 0129e30a09..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/getrusage.S +++ /dev/null @@ -1,148 +0,0 @@ -/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ERRNO_H 1 -#include <bits/errno.h> -#include <kernel-features.h> - -.text - -#if defined PIC && defined DO_VERSIONING -#define GETRUSAGE __getrusage_tv64 -#else -#define GETRUSAGE __getrusage -#endif - -#if defined __ASSUME_TIMEVAL64 -PSEUDO(GETRUSAGE, getrusage, 2) - ret -PSEUDO_END(GETRUSAGE) -#else -/* The problem here is that initially we made struct timeval compatible with - OSF/1, using int32. But we defined time_t with uint64, and later found - that POSIX requires tv_sec to be time_t. - - So now we have to do compatibility stuff. */ - -/* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. */ -.comm __libc_missing_axp_tv64, 4 - -LEAF(GETRUSAGE, 16) - ldgp gp, 0(pv) - subq sp, 16, sp -#ifdef PROF - .set noat - lda AT, _mcount - jsr AT, (AT), _mcount - .set at -#endif - .prologue 1 - - ldl t0, __libc_missing_axp_tv64 - - /* Save arguments in case we do need to fall back. */ - stq a0, 0(sp) - stq a1, 8(sp) - - bne t0, $do32 - - ldi v0, SYS_ify(getrusage) - callsys - bne a3, $err64 - - /* Everything ok. */ - addq sp, 16, sp - ret - - /* If we didn't get ENOSYS, it is a real error. */ - .align 3 -$err64: cmpeq v0, ENOSYS, t0 - beq t0, $error - stl t0, __libc_missing_axp_tv64 - - /* Recover the saved arguments. */ - ldq a1, 8(sp) - ldq a0, 0(sp) - - .align 3 -$do32: ldi v0, SYS_ify(osf_getrusage) - callsys - bne a3, $error - - /* Copy back to proper format. */ - ldq a1, 8(sp) - ldl t0, 0(a1) # ru_utime.tv_sec - ldl t1, 4(a1) # ru_utime.tv_usec - ldl t2, 8(a1) # ru_stime.tv_sec - ldl t3, 12(a1) # ru_stime.tv_usec - ldt $f15, 16(a1) # ru_maxrss - ldt $f16, 24(a1) # ru_ixrss - ldt $f17, 32(a1) # ru_idrss - ldt $f18, 40(a1) # ru_isrss - ldt $f19, 48(a1) # ru_minflt - ldt $f20, 56(a1) # ru_majflt - ldt $f21, 64(a1) # ru_nswap - ldt $f22, 72(a1) # ru_inblock - ldt $f23, 80(a1) # ru_oublock - ldt $f24, 88(a1) # ru_msgsend - ldt $f25, 96(a1) # ru_msgrcv - ldt $f26, 104(a1) # ru_nsignals - ldt $f27, 112(a1) # ru_nvcsw - .set noat - ldt $f28, 120(a1) # ru_nivcsw - .set at - stq t0, 0(a1) - stq t1, 8(a1) - stq t2, 16(a1) - stq t3, 24(a1) - stt $f15, 32(a1) - stt $f16, 40(a1) - stt $f17, 48(a1) - stt $f18, 56(a1) - stt $f19, 64(a1) - stt $f20, 72(a1) - stt $f21, 80(a1) - stt $f22, 88(a1) - stt $f23, 96(a1) - stt $f24, 104(a1) - stt $f25, 112(a1) - stt $f26, 120(a1) - stt $f27, 128(a1) - .set noat - stt $f28, 136(a1) - .set at - - addq sp, 16, sp - ret - - .align 3 -$error: - addq sp, 16, sp - SYSCALL_ERROR_HANDLER - -END(GETRUSAGE) -#endif /* __ASSUME_TIMEVAL64 */ - -#if defined PIC && defined DO_VERSIONING -strong_alias(__getrusage_tv64, ____getrusage_tv64) -default_symbol_version (____getrusage_tv64, __getrusage, GLIBC_2.1) -default_symbol_version (__getrusage_tv64, getrusage, GLIBC_2.1) -#else -weak_alias (__getrusage, getrusage) -#endif diff --git a/sysdeps/unix/sysv/linux/alpha/gettimeofday.S b/sysdeps/unix/sysv/linux/alpha/gettimeofday.S deleted file mode 100644 index 53c43c5545..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/gettimeofday.S +++ /dev/null @@ -1,119 +0,0 @@ -/* Copyright (C) 1998, 2002, 2003, 2006, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ERRNO_H 1 -#include <bits/errno.h> -#include <kernel-features.h> - -.text - -#if defined PIC && defined DO_VERSIONING -#define GETTIMEOFDAY __gettimeofday_tv64 -#else -#define GETTIMEOFDAY __gettimeofday -#endif - -#if defined __ASSUME_TIMEVAL64 -PSEUDO(GETTIMEOFDAY, gettimeofday, 2) - ret -PSEUDO_END(GETTIMEOFDAY) -#else - -/* The problem here is that initially we made struct timeval compatible with - OSF/1, using int32. But we defined time_t with uint64, and later found - that POSIX requires tv_sec to be time_t. - - So now we have to do compatibility stuff. */ - -/* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. */ -.comm __libc_missing_axp_tv64, 4 - -LEAF(GETTIMEOFDAY, 16) - ldgp gp, 0(pv) - subq sp, 16, sp -#ifdef PROF - .set noat - lda AT, _mcount - jsr AT, (AT), _mcount - .set at -#endif - .prologue 1 - - ldl t0, __libc_missing_axp_tv64 - - /* Save arguments in case we do need to fall back. */ - stq a0, 0(sp) - stq a1, 8(sp) - - bne t0, $do32 - - ldi v0, SYS_ify(gettimeofday) - callsys - bne a3, $err64 - - /* Everything ok. */ - addq sp, 16, sp - ret - - /* If we didn't get ENOSYS, it is a real error. */ - .align 3 -$err64: cmpeq v0, ENOSYS, t0 - beq t0, $error - stl t0, __libc_missing_axp_tv64 - - /* Recover the saved arguments. */ - ldq a1, 8(sp) - ldq a0, 0(sp) - - .align 3 -$do32: ldi v0, SYS_ify(osf_gettimeofday) - callsys - bne a3, $error - - /* Copy back to proper format. */ - ldq a0, 0(sp) - beq a0, 2f - ldl t0, 0(a0) - ldl t1, 4(a0) - stq t0, 0(a0) - stq t1, 8(a0) - -2: addq sp, 16, sp - ret - - .align 3 -$error: - addq sp, 16, sp - SYSCALL_ERROR_HANDLER - -END(GETTIMEOFDAY) -#endif /* __ASSUME_TIMEVAL64 */ - -#if defined PIC && defined DO_VERSIONING -default_symbol_version (__gettimeofday_tv64, __gettimeofday, GLIBC_2.1) - -/* It seems to me to be a misfeature of the assembler that we can only - have one version-alias per symbol. So create an alias ourselves. - The 'p' is for 'public'. *Shrug* */ -strong_alias (__gettimeofday_tv64, __gettimeofday_tv64p) -default_symbol_version (__gettimeofday_tv64p, gettimeofday, GLIBC_2.1) -#else -weak_alias (__gettimeofday, gettimeofday) -#endif -strong_alias(GETTIMEOFDAY, __gettimeofday_internal) diff --git a/sysdeps/unix/sysv/linux/alpha/kernel-features.h b/sysdeps/unix/sysv/linux/alpha/kernel-features.h index 1f30c6598b..3eaa422b12 100644 --- a/sysdeps/unix/sysv/linux/alpha/kernel-features.h +++ b/sysdeps/unix/sysv/linux/alpha/kernel-features.h @@ -1,6 +1,6 @@ /* Set flags signalling availability of kernel features based on given kernel version number. - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -20,11 +20,6 @@ #ifndef _KERNEL_FEATURES_H #define _KERNEL_FEATURES_H 1 -/* alpha switched to a 64-bit timeval sometime before 2.2.0. */ -#if __LINUX_KERNEL_VERSION >= 131584 -# define __ASSUME_TIMEVAL64 1 -#endif - /* The tgkill syscall was introduced for alpha 2.6.0-test1 which unfortunately cannot be distinguished from 2.6.0. */ #if __LINUX_KERNEL_VERSION >= 132609 diff --git a/sysdeps/unix/sysv/linux/alpha/nptl/ld.abilist b/sysdeps/unix/sysv/linux/alpha/nptl/ld.abilist index d0dbb988c3..23ff7fa799 100644 --- a/sysdeps/unix/sysv/linux/alpha/nptl/ld.abilist +++ b/sysdeps/unix/sysv/linux/alpha/nptl/ld.abilist @@ -9,9 +9,7 @@ GLIBC_2.0 GLIBC_2.1 GLIBC_2.1 A __libc_stack_end D 0x8 - __setitimer F _dl_mcount F - setitimer F GLIBC_2.3 GLIBC_2.3 A __tls_get_addr F diff --git a/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist b/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist index 5ece28f5a2..6d333aa522 100644 --- a/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist @@ -124,6 +124,10 @@ GLIBC_2.0 __deregister_frame F __deregister_frame_info F __dgettext F + __divl F + __divlu F + __divq F + __divqu F __dup2 F __environ D 0x8 __errno_location F @@ -195,6 +199,10 @@ GLIBC_2.0 __register_frame_info F __register_frame_info_table F __register_frame_table F + __reml F + __remlu F + __remq F + __remqu F __res_randomid F __sbrk F __sched_get_priority_max F @@ -1333,14 +1341,6 @@ GLIBC_2.0 xencrypt F xprt_register F xprt_unregister F -__divl GLIBC_2.0 g ? D .text 0000000000000060 -__divlu GLIBC_2.0 g ? D .text 0000000000000060 -__divq GLIBC_2.0 g ? D .text 00000000000001c4 -__divqu GLIBC_2.0 g ? D .text 000000000000018c -__reml GLIBC_2.0 g ? D .text 0000000000000064 -__remlu GLIBC_2.0 g ? D .text 0000000000000064 -__remq GLIBC_2.0 g ? D .text 00000000000001c0 -__remqu GLIBC_2.0 g ? D .text 00000000000001b4 GLIBC_2.1 GLIBC_2.1 A _IO_2_1_stderr_ D 0xe0 @@ -1440,8 +1440,6 @@ GLIBC_2.1 __towctrans_l F __towlower_l F __towupper_l F - __utimes F - __wait4 F __wcscasecmp_l F __wcscoll_l F __wcsncasecmp_l F diff --git a/sysdeps/unix/sysv/linux/alpha/select.S b/sysdeps/unix/sysv/linux/alpha/select.S deleted file mode 100644 index 9a141398df..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/select.S +++ /dev/null @@ -1,240 +0,0 @@ -/* Copyright (C) 1998,2002,2003,2006,2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep-cancel.h> -#define _ERRNO_H 1 -#include <bits/errno.h> -#include <kernel-features.h> - -.text - -#if defined PIC && defined DO_VERSIONING -#define SELECT __select_tv64 -#else -#define SELECT __select -#endif - -#if defined __ASSUME_TIMEVAL64 -PSEUDO(SELECT, select, 5) - ret -PSEUDO_END(SELECT) -#else -/* The problem here is that initially we made struct timeval compatible with - OSF/1, using int32. But we defined time_t with uint64, and later found - that POSIX requires tv_sec to be time_t. - - So now we have to do compatibility stuff. */ - -/* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. */ -.comm __libc_missing_axp_tv64, 4 - -LEAF(SELECT, 64) - ldgp gp, 0(pv) - subq sp, 64, sp -#ifdef PROF - .set noat - lda AT, _mcount - jsr AT, (AT), _mcount - .set at -#endif - stq ra, 40(sp) - .mask 0x4000000, 40-64 - .prologue 1 - -#ifdef CENABLE - SINGLE_THREAD_P (t1) -#else - ldl t0, __libc_missing_axp_tv64 -#endif - - /* Save timeout early, since we'll need to recover this after - the system call. */ - stq a4, 48(sp) - -#ifdef CENABLE - bne t1, $do_cancel -#endif - - bne t0, $do32 - - /* Save arguments in case we do need to fall back. */ - stq a0, 8(sp) - stq a1, 16(sp) - stq a2, 24(sp) - stq a3, 32(sp) - - ldi v0, SYS_ify(select) - callsys - bne a3, $err64 - - /* Everything ok. */ - addq sp, 64, sp - ret - - /* If we didn't get ENOSYS, it is a real error. */ - .align 3 -$err64: cmpeq v0, ENOSYS, t0 - beq t0, $error - stl t0, __libc_missing_axp_tv64 - - /* Recover the saved arguments. */ - ldq a4, 48(sp) - ldq a3, 32(sp) - ldq a2, 24(sp) - ldq a1, 16(sp) - ldq a0, 8(sp) - - .align 3 -$do32: - /* If the timeout argument is present bounce to the smaller fmt. */ - beq a4, 1f - ldq t0, 0(a4) - ldq t1, 8(a4) - stl t0, 0(sp) - stl t1, 4(sp) - mov sp, a4 - -1: ldi v0, SYS_ify(osf_select) - callsys - bne a3, $error - - /* ... and bounce the remaining timeout back. */ - ldq a4, 48(sp) - beq a4, 2f - ldl t0, 0(sp) - ldl t1, 4(sp) - stq t0, 0(a4) - stq t1, 8(a4) - -2: addq sp, 64, sp - ret - -#ifdef CENABLE - .align 3 -$do_cancel: - /* Save arguments. */ - stq a0, 8(sp) - stq a1, 16(sp) - stq a2, 24(sp) - stq a3, 32(sp) - - CENABLE - mov v0, ra - - ldl t0, __libc_missing_axp_tv64 - bne t0, $do_cancel32 - - /* Recover the saved arguments. */ - ldq a4, 48(sp) - ldq a3, 32(sp) - ldq a2, 24(sp) - ldq a1, 16(sp) - ldq a0, 8(sp) - - ldi v0, SYS_ify(select) - callsys - - mov ra, a0 - bne a3, $cancel_err64 - - stq v0, 8(sp) - CDISABLE - ldq v0, 8(sp) - ldq ra, 40(sp) - - /* Everything ok. */ - addq sp, 64, sp - ret - - /* If we didn't get ENOSYS, it is a real error. */ - .align 3 -$cancel_err64: - cmpeq v0, ENOSYS, t0 - beq t0, $cancel_error - stl t0, __libc_missing_axp_tv64 - - /* Recover the saved arguments. */ - .align 3 -$do_cancel32: - ldq a4, 48(sp) - ldq a3, 32(sp) - ldq a2, 24(sp) - ldq a1, 16(sp) - ldq a0, 8(sp) - - /* If the timeout argument is present bounce to the smaller fmt. */ - beq a4, 1f - ldq t0, 0(a4) - ldq t1, 8(a4) - stl t0, 0(sp) - stl t1, 4(sp) - mov sp, a4 - -1: ldi v0, SYS_ify(osf_select) - callsys - - mov ra, a0 - bne a3, $cancel_error - - /* ... and bounce the remaining timeout back. */ - ldq a4, 48(sp) - beq a4, 2f - ldl t0, 0(sp) - ldl t1, 4(sp) - stq t0, 0(a4) - stq t1, 8(a4) - -2: stq v0, 8(sp) - CDISABLE - ldq v0, 8(sp) - ldq ra, 40(sp) - - addq sp, 64, sp - ret - - .align 3 -$cancel_error: - stq v0, 8(sp) - CDISABLE - ldq v0, 8(sp) - ldq ra, 40(sp) -#endif - - .align 3 -$error: - addq sp, 64, sp - SYSCALL_ERROR_HANDLER - -END(SELECT) -#endif /* __ASSUME_TIMEVAL64 */ - -#if defined PIC && defined DO_VERSIONING -default_symbol_version (__select_tv64, __select, GLIBC_2.1) - -/* It seems to me to be a misfeature of the assembler that we can only - have one version-alias per symbol. So create an alias ourselves. - The 'p' is for 'public'. *Shrug* */ -strong_alias (__select_tv64, __select_tv64p) -default_symbol_version (__select_tv64p, select, GLIBC_2.1) -libc_hidden_ver (__select_tv64, __select) -strong_alias (__select_tv64, __libc_select) -#else -strong_alias (__select, __libc_select) -weak_alias (__select, select) -libc_hidden_def (__select) -#endif diff --git a/sysdeps/unix/sysv/linux/alpha/setitimer.S b/sysdeps/unix/sysv/linux/alpha/setitimer.S deleted file mode 100644 index f8b2f9888b..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/setitimer.S +++ /dev/null @@ -1,136 +0,0 @@ -/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ERRNO_H 1 -#include <bits/errno.h> -#include <kernel-features.h> - -.text - -#if defined PIC && defined DO_VERSIONING -#define SETITIMER __setitimer_tv64 -#else -#define SETITIMER __setitimer -#endif - -#if defined __ASSUME_TIMEVAL64 -PSEUDO(SETITIMER, setitimer, 3) - ret -PSEUDO_END(SETITIMER) -#else -/* The problem here is that initially we made struct timeval compatible with - OSF/1, using int32. But we defined time_t with uint64, and later found - that POSIX requires tv_sec to be time_t. - - So now we have to do compatibility stuff. */ - -/* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. */ -.comm __libc_missing_axp_tv64, 4 - -LEAF(SETITIMER, 48) - ldgp gp, 0(pv) - subq sp, 48, sp -#ifdef PROF - .set noat - lda AT, _mcount - jsr AT, (AT), _mcount - .set at -#endif - .prologue 1 - - ldl t0, __libc_missing_axp_tv64 - - /* Save arguments in case we do need to fall back. */ - stq a0, 0(sp) - stq a1, 8(sp) - stq a2, 16(sp) - - bne t0, $do32 - - ldi v0, SYS_ify(setitimer) - callsys - bne a3, $err64 - - /* Everything ok. */ - addq sp, 48, sp - ret - - /* If we didn't get ENOSYS, it is a real error. */ - .align 3 -$err64: cmpeq v0, ENOSYS, t0 - beq t0, $error - stl t0, __libc_missing_axp_tv64 - - /* Recover the saved arguments. */ - ldq a2, 16(sp) - ldq a1, 8(sp) - ldq a0, 0(sp) - - .align 3 -$do32: - /* Conditionally bounce new value down. */ - beq a1, 1f - ldq t0, 0(a1) - ldq t1, 8(a1) - ldq t2, 16(a1) - ldq t3, 24(a1) - stl t0, 32(sp) - stl t1, 36(sp) - stl t2, 40(sp) - stl t3, 44(sp) - addq sp, 32, a1 - -1: ldi v0, SYS_ify(osf_setitimer) - callsys - bne a3, $error - - /* Conditionaly bounce old value up. */ - ldq a2, 16(sp) - bne a2, 2f - ldl t0, 0(a2) - ldl t1, 4(a2) - ldl t2, 8(a2) - ldl t3, 12(a2) - stq t0, 0(a2) - stq t1, 8(a2) - stq t2, 48(a2) - stq t3, 24(a2) - -2: addq sp, 48, sp - ret - - .align 3 -$error: - addq sp, 48, sp - SYSCALL_ERROR_HANDLER - -END(SETITIMER) -#endif /* __ASSUME_TIMEVAL64 */ - -#if defined PIC && defined DO_VERSIONING -default_symbol_version (__setitimer_tv64, __setitimer, GLIBC_2.1) - -/* It seems to me to be a misfeature of the assembler that we can only - have one version-alias per symbol. So create an alias ourselves. - The 'p' is for 'public'. *Shrug* */ -strong_alias (__setitimer_tv64, __setitimer_tv64p) -default_symbol_version (__setitimer_tv64p, setitimer, GLIBC_2.1) -#else -weak_alias (__setitimer, setitimer) -#endif diff --git a/sysdeps/unix/sysv/linux/alpha/settimeofday.S b/sysdeps/unix/sysv/linux/alpha/settimeofday.S deleted file mode 100644 index b56c215fcd..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/settimeofday.S +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ERRNO_H 1 -#include <bits/errno.h> -#include <kernel-features.h> - -.text - -#if defined PIC && defined DO_VERSIONING -#define SETTIMEOFDAY __settimeofday_tv64 -#else -#define SETTIMEOFDAY __settimeofday -#endif - -#if defined __ASSUME_TIMEVAL64 -PSEUDO(SETTIMEOFDAY, settimeofday, 2) - ret -PSEUDO_END(SETTIMEOFDAY) -#else -/* The problem here is that initially we made struct timeval compatible with - OSF/1, using int32. But we defined time_t with uint64, and later found - that POSIX requires tv_sec to be time_t. - - So now we have to do compatibility stuff. */ - -/* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. */ -.comm __libc_missing_axp_tv64, 4 - -LEAF(SETTIMEOFDAY, 16) - ldgp gp, 0(pv) - subq sp, 16, sp -#ifdef PROF - .set noat - lda AT, _mcount - jsr AT, (AT), _mcount - .set at -#endif - .prologue 1 - - ldl t0, __libc_missing_axp_tv64 - bne t0, $do32 - - /* Save arguments in case we do need to fall back. */ - stq a0, 0(sp) - stq a1, 8(sp) - - ldi v0, SYS_ify(settimeofday) - callsys - bne a3, $err64 - - /* Everything ok. */ - addq sp, 16, sp - ret - - /* If we didn't get ENOSYS, it is a real error. */ - .align 3 -$err64: cmpeq v0, ENOSYS, t0 - beq t0, $error - stl t0, __libc_missing_axp_tv64 - - /* Recover the saved arguments. */ - ldq a1, 8(sp) - ldq a0, 0(sp) - - .align 3 -$do32: - /* Conditionally bounce the timeval down. */ - beq a0, 1f - ldq t0, 0(a0) - ldq t1, 8(a0) - stl t0, 0(sp) - stl t1, 4(sp) - mov sp, a0 - -1: ldi v0, SYS_ify(osf_settimeofday) - callsys - bne a3, $error - - addq sp, 16, sp - ret - - .align 3 -$error: - addq sp, 16, sp - SYSCALL_ERROR_HANDLER - -END(SETTIMEOFDAY) -#endif /* __ASSUME_TIMEVAL64 */ - -#if defined PIC && defined DO_VERSIONING -default_symbol_version (__settimeofday_tv64, __settimeofday, GLIBC_2.1) - -/* It seems to me to be a misfeature of the assembler that we can only - have one version-alias per symbol. So create an alias ourselves. - The 'p' is for 'public'. *Shrug* */ -strong_alias (__settimeofday_tv64, __settimeofday_tv64p) -default_symbol_version (__settimeofday_tv64p, settimeofday, GLIBC_2.1) -#else -weak_alias (__settimeofday, settimeofday) -#endif diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list index 412b675198..809d82b687 100644 --- a/sysdeps/unix/sysv/linux/alpha/syscalls.list +++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list @@ -52,7 +52,17 @@ osf_getitimer - osf_getitimer 2 __getitimer_tv32 getitimer@GLIBC_2.0 osf_setitimer - osf_setitimer 3 __setitimer_tv32 setitimer@GLIBC_2.0 osf_utimes - osf_utimes 2 __utimes_tv32 utimes@GLIBC_2.0 osf_getrusage - osf_getrusage 2 __getrusage_tv32 getrusage@GLIBC_2.0 -osf_wait4 - osf_wait4 2 __wait4_tv32 wait4@GLIBC_2.0 +osf_wait4 - osf_wait4 4 __wait4_tv32 wait4@GLIBC_2.0 + +# support new timeval64 entry points +select - select C:5 __GI___select select@@GLIBC_2.1 __select@@GLIBC_2.1 +gettimeofday - gettimeofday 2 __GI___gettimeofday gettimeofday@@GLIBC_2.1 __gettimeofday@@GLIBC_2.1 +settimeofday - settimeofday 2 __settimeofday settimeofday@@GLIBC_2.1 +getitimer - getitimer 2 __getitimer getitimer@@GLIBC_2.1 +setitimer - setitimer 3 __setitimer setitimer@@GLIBC_2.1 +utimes - utimes 2 __utimes utimes@@GLIBC_2.1 +getrusage - getrusage 2 __getrusage getrusage@@GLIBC_2.1 +wait4 - wait4 4 __wait4 wait4@@GLIBC_2.1 # avoid 64-bit aliases on 32-bit statfs syscalls fstatfs - fstatfs i:ip __fstatfs fstatfs diff --git a/sysdeps/unix/sysv/linux/alpha/utimes.S b/sysdeps/unix/sysv/linux/alpha/utimes.S deleted file mode 100644 index 18eb136742..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/utimes.S +++ /dev/null @@ -1,122 +0,0 @@ -/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ERRNO_H 1 -#include <bits/errno.h> -#include <kernel-features.h> - -.text - -#if defined PIC && defined DO_VERSIONING -#define UTIMES __utimes_tv64 -#else -#define UTIMES __utimes -#endif - -#if defined __ASSUME_TIMEVAL64 -PSEUDO(UTIMES, utimes, 2) - ret -PSEUDO_END(UTIMES) -#else -/* The problem here is that initially we made struct timeval compatible with - OSF/1, using int32. But we defined time_t with uint64, and later found - that POSIX requires tv_sec to be time_t. - - So now we have to do compatibility stuff. */ - -/* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. */ -.comm __libc_missing_axp_tv64, 4 - -LEAF(UTIMES, 16) - ldgp gp, 0(pv) - subq sp, 16, sp -#ifdef PROF - .set noat - lda AT, _mcount - jsr AT, (AT), _mcount - .set at -#endif - .prologue 1 - - ldl t0, __libc_missing_axp_tv64 - - /* Save arguments in case we do need to fall back. */ - stq a0, 0(sp) - stq a1, 8(sp) - - bne t0, $do32 - - ldi v0, SYS_ify(utimes) - callsys - bne a3, $err64 - - /* Everything ok. */ - addq sp, 16, sp - ret - - /* If we didn't get ENOSYS, it is a real error. */ - .align 3 -$err64: cmpeq v0, ENOSYS, t0 - beq t0, $error - stl t0, __libc_missing_axp_tv64 - - /* Recover the saved arguments. */ - ldq a1, 8(sp) - ldq a0, 0(sp) - - .align 3 -$do32: - /* Conditionally bounce values down. */ - beq a1, 1f - ldq t0, 0(a1) - ldq t1, 8(a1) - ldq t2, 16(a1) - ldq t3, 24(a1) - stl t0, 0(sp) - stl t1, 4(sp) - stl t2, 8(sp) - stl t3, 12(sp) - mov sp, a1 - -1: ldi v0, SYS_ify(osf_utimes) - callsys - bne a3, $error - - addq sp, 16, sp - ret - - .align 3 -$error: - addq sp, 16, sp - SYSCALL_ERROR_HANDLER - -END(UTIMES) -#endif /* __ASSUME_TIMEVAL64 */ - -#if defined PIC && defined DO_VERSIONING -default_symbol_version (__utimes_tv64, __utimes, GLIBC_2.1) - -/* It seems to me to be a misfeature of the assembler that we can only - have one version-alias per symbol. So create an alias ourselves. - The 'p' is for 'public'. *Shrug* */ -strong_alias (__utimes_tv64, __utimes_tv64p) -default_symbol_version (__utimes_tv64p, utimes, GLIBC_2.1) -#else -weak_alias (__utimes, utimes) -#endif diff --git a/sysdeps/unix/sysv/linux/alpha/wait4.S b/sysdeps/unix/sysv/linux/alpha/wait4.S deleted file mode 100644 index 7a71fd01ef..0000000000 --- a/sysdeps/unix/sysv/linux/alpha/wait4.S +++ /dev/null @@ -1,155 +0,0 @@ -/* Copyright (C) 1998, 2003, 2006, 2012 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - <http://www.gnu.org/licenses/>. */ - -#include <sysdep.h> -#define _ERRNO_H 1 -#include <bits/errno.h> -#include <kernel-features.h> - -.text - -#if defined PIC && defined DO_VERSIONING -#define WAIT4 __wait4_tv64 -#else -#define WAIT4 __wait4 -#endif - -#if defined __ASSUME_TIMEVAL64 -PSEUDO(WAIT4, wait4, 4) - ret -PSEUDO_END(WAIT4) -#else -/* The problem here is that initially we made struct timeval compatible with - OSF/1, using int32. But we defined time_t with uint64, and later found - that POSIX requires tv_sec to be time_t. - - So now we have to do compatibility stuff. */ - -/* The variable is shared between all wrappers around signal handling - functions which have RT equivalents. */ -.comm __libc_missing_axp_tv64, 4 - -LEAF(WAIT4, 32) - ldgp gp, 0(pv) - subq sp, 32, sp -#ifdef PROF - .set noat - lda AT, _mcount - jsr AT, (AT), _mcount - .set at -#endif - .prologue 1 - - ldl t0, __libc_missing_axp_tv64 - - /* Save arguments in case we do need to fall back. */ - stq a0, 0(sp) - stq a1, 8(sp) - stq a2, 16(sp) - stq a3, 24(sp) - - bne t0, $do32 - - ldi v0, SYS_ify(wait4) - callsys - bne a3, $err64 - - /* Everything ok. */ - addq sp, 32, sp - ret - - /* If we didn't get ENOSYS, it is a real error. */ - .align 3 -$err64: cmpeq v0, ENOSYS, t0 - beq t0, $error - stl t0, __libc_missing_axp_tv64 - - /* Recover the saved arguments. */ - ldq a3, 24(sp) - ldq a2, 16(sp) - ldq a1, 8(sp) - ldq a0, 0(sp) - - .align 3 -$do32: ldi v0, SYS_ify(osf_wait4) - callsys - bne a3, $error - - /* Copy back to proper format. */ - ldq a3, 24(sp) - beq a3, 2f - ldl t0, 0(a3) # ru_utime.tv_sec - ldl t1, 4(a3) # ru_utime.tv_usec - ldl t2, 8(a3) # ru_stime.tv_sec - ldl t3, 12(a3) # ru_stime.tv_usec - ldt $f15, 16(a3) # ru_maxrss - ldt $f16, 24(a3) # ru_ixrss - ldt $f17, 32(a3) # ru_idrss - ldt $f18, 40(a3) # ru_isrss - ldt $f19, 48(a3) # ru_minflt - ldt $f20, 56(a3) # ru_majflt - ldt $f21, 64(a3) # ru_nswap - ldt $f22, 72(a3) # ru_inblock - ldt $f23, 80(a3) # ru_oublock - ldt $f24, 88(a3) # ru_msgsend - 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) - stq t2, 16(a3) - stq t3, 24(a3) - stt $f15, 32(a3) - stt $f16, 40(a3) - stt $f17, 48(a3) - stt $f18, 56(a3) - stt $f19, 64(a3) - stt $f20, 72(a3) - stt $f21, 80(a3) - stt $f22, 88(a3) - stt $f23, 96(a3) - stt $f24, 104(a3) - stt $f25, 112(a3) - stt $f26, 120(a3) - stt $f27, 128(a3) - stt $f28, 136(a3) - .set at - -2: addq sp, 32, sp - ret - - .align 3 -$error: - addq sp, 32, sp - SYSCALL_ERROR_HANDLER - -END(WAIT4) -#endif /* __ASSUME_TIMEVAL64 */ - -#if 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 - have one version-alias per symbol. So create an alias ourselves. - 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 |