aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/alpha/fpu
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-10-31 23:32:56 +0000
committerUlrich Drepper <drepper@redhat.com>1999-10-31 23:32:56 +0000
commit63ae7b6309964400c6289d9030c7d336a33b304f (patch)
treeb4b63c3c08a2221de53048493b2c586a9aa79689 /sysdeps/alpha/fpu
parentb4cbd37109d882aa052e7973684774eaa887071b (diff)
downloadglibc-63ae7b6309964400c6289d9030c7d336a33b304f.zip
glibc-63ae7b6309964400c6289d9030c7d336a33b304f.tar.gz
glibc-63ae7b6309964400c6289d9030c7d336a33b304f.tar.bz2
Update.
* Versions.def (libm): Add GLIBC_2.1.3. ISO C99 TR1 changes various fe* functions to return an error value. * math/Versions [GLIBC_2.1.3]: Add feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag, fegetenv, fesetenv, and feupdateenv. * sysdeps/alpha/fpu/fclrexcpt.c: Return value and add alias. * sysdeps/alpha/fpu/fegetenv.c: Likewise. * sysdeps/alpha/fpu/fesetenv.c: Likewise. * sysdeps/alpha/fpu/feupdateenv.c: Likewise. * sysdeps/alpha/fpu/fgetexcptflg.c: Likewise. * sysdeps/alpha/fpu/fraiseexcpt.c: Likewise. * sysdeps/alpha/fpu/fsetexcptflg.c: Likewise. * sysdeps/arm/fpu/fclrexcpt.c: Likewise. * sysdeps/arm/fpu/fegetenv.c: Likewise. * sysdeps/arm/fpu/fesetenv.c: Likewise. * sysdeps/arm/fpu/fraiseexcpt.c: Likewise. * sysdeps/arm/fpu/fsetexcptflg.c: Likewise. * sysdeps/generic/fclrexcpt.c: Likewise. * sysdeps/generic/fegetenv.c: Likewise. * sysdeps/generic/fesetenv.c: Likewise. * sysdeps/generic/feupdateenv.c: Likewise. * sysdeps/generic/fgetexcptflg.c: Likewise. * sysdeps/generic/fraiseexcpt.c: Likewise. * sysdeps/generic/fsetexcptflg.c: Likewise. * sysdeps/i386/fpu/fclrexcpt.c: Likewise. * sysdeps/i386/fpu/fegetenv.c: Likewise. * sysdeps/i386/fpu/fesetenv.c: Likewise. * sysdeps/i386/fpu/feupdateenv.c: Likewise. * sysdeps/i386/fpu/fgetexcptflg.c: Likewise. * sysdeps/i386/fpu/fraiseexcpt.c: Likewise. * sysdeps/i386/fpu/fsetexcptflg.c: Likewise. * sysdeps/m68k/fpu/fclrexcpt.c: Likewise. * sysdeps/m68k/fpu/fegetenv.c: Likewise. * sysdeps/m68k/fpu/fesetenv.c: Likewise. * sysdeps/m68k/fpu/feupdateenv.c: Likewise. * sysdeps/m68k/fpu/fgetexcptflg.c: Likewise. * sysdeps/m68k/fpu/fraiseexcpt.c: Likewise. * sysdeps/m68k/fpu/fsetexcptflg.c: Likewise. * sysdeps/mips/fclrexcpt.c: Likewise. * sysdeps/mips/fegetenv.c: Likewise. * sysdeps/mips/fesetenv.c: Likewise. * sysdeps/mips/feupdateenv.c: Likewise. * sysdeps/mips/fgetexcptflg.c: Likewise. * sysdeps/powerpc/fclrexcpt.c: Likewise. * sysdeps/powerpc/fegetenv.c: Likewise. * sysdeps/powerpc/fesetenv.c: Likewise. * sysdeps/powerpc/feupdateenv.c: Likewise. * sysdeps/powerpc/fgetexcptflg.c: Likewise. * sysdeps/powerpc/fraiseexcpt.c: Likewise. * sysdeps/powerpc/fsetexcptflg.c: Likewise. * sysdeps/sparc/fpu/fclrexcpt.c: Likewise. * sysdeps/sparc/fpu/fegetenv.c: Likewise. * sysdeps/sparc/fpu/fesetenv.c: Likewise. * sysdeps/sparc/fpu/feupdateenv.c: Likewise. * sysdeps/sparc/fpu/fgetexcptflg.c: Likewise. * sysdeps/sparc/fpu/fraiseexcpt.c: Likewise. * sysdeps/sparc/fpu/fsetexcptflg.c: Likewise. * math/fenv.h: Adjust prototypes.: Likewise. * manual/arith.texi: Adjust documentation for these changes. * manual/arith.texi: Document feraiseexcept. * sysdeps/powerpc/fegetenv.c: Moved to... * sysdeps/powerpc/fpu/fegetenv.c: ...here. * sysdeps/powerpc/fegetround.c: Moved to... * sysdeps/powerpc/fpu/fegetround.c: ...here. * sysdeps/powerpc/feholdexcpt.c: Moved to... * sysdeps/powerpc/fpu/feholdexcpt.c: ...here. * sysdeps/powerpc/fesetenv.c: Moved to... * sysdeps/powerpc/fpu/fesetenv.c: ...here. * sysdeps/powerpc/fenv_libc.h: Moved to... * sysdeps/powerpc/fpu/fenv_libc.h: ...here. * sysdeps/powerpc/feupdateenv.c: Moved to... * sysdeps/powerpc/fpu/feupdateenv.c: ...here. * sysdeps/powerpc/fgetexcptflg.c: Moved to... * sysdeps/powerpc/fpu/fgetexcptflg.c: ...here. * sysdeps/powerpc/fraiseexcpt.c: Moved to... * sysdeps/powerpc/fpu/fraiseexcpt.c: ...here. * sysdeps/powerpc/fsetexcptflg.c: Moved to... * sysdeps/powerpc/fpu/fsetexcptflg.c: ...here. * sysdeps/powerpc/ftestexcept.c: Moved to... * sysdeps/powerpc/fpu/ftestexcept.c: ...here. * sysdeps/powerpc/fesetround.c: Moved to... * sysdeps/powerpc/fpu/fesetround.c: ...here * sysdeps/powerpc/fenv_const.c: Moved to... * sysdeps/powerpc/fpu/fenv_const.c: ...here. 1999-10-29 Jakub Jelinek <jakub@redhat.com> * stdlib/longlong.h: Avoid UDIV_TIME redefinition. * sysdeps/sparc/sparc32/dl-machine.h: Fix loading of SPARC v8plus libraries from statically linked programs. * sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: POSIX 199309 fix for sigaction on SPARC. Patches by David S. Miller <davem@redhat.com>. * sysdeps/unix/sysv/linux/sparc/sys/ucontext.h: Declare gregset_t and other required structures and defines for SPARC 64bit ABI as well, not only 32bit ABI. 1999-10-31 Andreas Jaeger <aj@suse.de> * sysdeps/sparc/sparc64/fpu/bits/huge_val.h: Replace __USE_ISOC9X by __USE_ISOC99 and update comments. * math/complex.h: Update comments for ISO C99. * math/fenv.h: Likewise. * math/test-fenv.c: Likewise. * math/tgmath.h: Likewise. * libio/stdio.h: Likewise. * posix/sys/types.h: Likewise. * sysdeps/generic/inttypes.h: Likewise. * sysdeps/generic/stdint.h: Likewise. 1999-10-31 Ulrich Drepper <drepper@cygnus.com>
Diffstat (limited to 'sysdeps/alpha/fpu')
-rw-r--r--sysdeps/alpha/fpu/fclrexcpt.c20
-rw-r--r--sysdeps/alpha/fpu/fegetenv.c19
-rw-r--r--sysdeps/alpha/fpu/fesetenv.c24
-rw-r--r--sysdeps/alpha/fpu/feupdateenv.c20
-rw-r--r--sysdeps/alpha/fpu/fgetexcptflg.c14
-rw-r--r--sysdeps/alpha/fpu/fraiseexcpt.c47
-rw-r--r--sysdeps/alpha/fpu/fsetexcptflg.c18
7 files changed, 98 insertions, 64 deletions
diff --git a/sysdeps/alpha/fpu/fclrexcpt.c b/sysdeps/alpha/fpu/fclrexcpt.c
index 7aa79af..2e76995 100644
--- a/sysdeps/alpha/fpu/fclrexcpt.c
+++ b/sysdeps/alpha/fpu/fclrexcpt.c
@@ -1,5 +1,5 @@
/* Clear given exceptions in current floating-point environment.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>, 1997.
@@ -20,17 +20,23 @@
#include <fenv.h>
-void
-feclearexcept (int excepts)
+int
+__feclearexcept (int excepts)
{
- unsigned long swcr;
+ unsigned long int swcr;
/* Get the current state. */
- swcr = __ieee_get_fp_control();
+ swcr = __ieee_get_fp_control ();
/* Clear the relevant bits. */
- swcr &= ~((unsigned long)excepts & FE_ALL_EXCEPT);
+ swcr &= ~((unsigned long int) excepts & FE_ALL_EXCEPT);
/* Put the new state in effect. */
- __ieee_set_fp_control(swcr);
+ __ieee_set_fp_control (swcr);
+
+ /* Success. */
+ return 0;
}
+strong_alias (__feclearexcept, __old_feclearexcept)
+symbol_version (__old_feclearexcept, feclearexcept, GLIBC_2.1);
+default_symbol_version (__feclearexcept, feclearexcept, GLIBC_2.1.3);
diff --git a/sysdeps/alpha/fpu/fegetenv.c b/sysdeps/alpha/fpu/fegetenv.c
index c8b705d..63dc7ff 100644
--- a/sysdeps/alpha/fpu/fegetenv.c
+++ b/sysdeps/alpha/fpu/fegetenv.c
@@ -1,5 +1,5 @@
/* Store current floating-point environment.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>, 1997
@@ -20,18 +20,25 @@
#include <fenv.h>
-void
-fegetenv (fenv_t *envp)
+int
+__fegetenv (fenv_t *envp)
{
- unsigned long fpcr, swcr;
+ unsigned long int fpcr;
+ unsigned long int swcr;
/* Get status from software and hardware. Note that we don't need an
excb because the callsys is an implied trap barrier. */
- swcr = __ieee_get_fp_control();
- __asm__ __volatile__("mf_fpcr %0" : "=f"(fpcr));
+ swcr = __ieee_get_fp_control ();
+ __asm__ __volatile__ ("mf_fpcr %0" : "=f" (fpcr));
/* Merge the two bits of information. The magic number at the end is
the exception enable mask. */
*envp = (fpcr & (3UL << 58)) | (swcr & (FE_ALL_EXCEPT | 0x3e));
+
+ /* Success. */
+ return 0;
}
+strong_alias (__fegetenv, __old_fegetenv)
+symbol_version (__old_fegetenv, fegetenv, GLIBC_2.1);
+default_symbol_version (__fegetenv, fegetenv, GLIBC_2.1.3);
diff --git a/sysdeps/alpha/fpu/fesetenv.c b/sysdeps/alpha/fpu/fesetenv.c
index 3692967..9a38778 100644
--- a/sysdeps/alpha/fpu/fesetenv.c
+++ b/sysdeps/alpha/fpu/fesetenv.c
@@ -1,5 +1,5 @@
/* Install given floating-point environment.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>, 1997
@@ -20,26 +20,32 @@
#include <fenv.h>
-void
-fesetenv (const fenv_t *envp)
+int
+__fesetenv (const fenv_t *envp)
{
- unsigned long fpcr;
+ unsigned long int fpcr;
fenv_t env;
/* Magic encoding of default values: high bit set (never possible for a
user-space address) is not indirect. And we don't even have to get
rid of it since we mask things around just below. */
- if ((long)envp >= 0)
+ if ((long int) envp >= 0)
env = *envp;
else
- env = (unsigned long)envp;
+ env = (unsigned long int) envp;
/* Reset the rounding mode with the hardware fpcr. Note that the following
system call is an implied trap barrier for our modification. */
- __asm__ __volatile__("excb; mf_fpcr %0" : "=f"(fpcr));
+ __asm__ __volatile__ ("excb; mf_fpcr %0" : "=f" (fpcr));
fpcr = (fpcr & ~(3UL << 58)) | (env & (3UL << 58));
- __asm__ __volatile__("mt_fpcr %0" : : "f"(fpcr));
+ __asm__ __volatile__ ("mt_fpcr %0" : : "f" (fpcr));
/* Reset the exception status and mask with the kernel's FP code. */
- __ieee_set_fp_control(env & (FE_ALL_EXCEPT | 0x3e));
+ __ieee_set_fp_control (env & (FE_ALL_EXCEPT | 0x3e));
+
+ /* Success. */
+ return 0;
}
+strong_alias (__fesetenv, __old_fesetenv)
+symbol_version (__old_fesetenv, fesetenv, GLIBC_2.1);
+default_symbol_version (__fesetenv, fesetenv, GLIBC_2.1.3);
diff --git a/sysdeps/alpha/fpu/feupdateenv.c b/sysdeps/alpha/fpu/feupdateenv.c
index 816575a..bd6a979 100644
--- a/sysdeps/alpha/fpu/feupdateenv.c
+++ b/sysdeps/alpha/fpu/feupdateenv.c
@@ -1,5 +1,5 @@
/* Install given floating-point environment and raise exceptions.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>, 1997.
@@ -20,19 +20,25 @@
#include <fenv.h>
-void
-feupdateenv (const fenv_t *envp)
+int
+__feupdateenv (const fenv_t *envp)
{
- unsigned long tmp;
+ unsigned long int tmp;
/* Get the current exception state. */
- tmp = __ieee_get_fp_control();
+ tmp = __ieee_get_fp_control ();
/* Install new environment. */
- fesetenv(envp);
+ fesetenv (envp);
/* Raise the saved exception. Incidently for us the implementation
defined format of the values in objects of type fexcept_t is the
same as the ones specified using the FE_* constants. */
- feraiseexcept((int)tmp & FE_ALL_EXCEPT);
+ feraiseexcept ((int) tmp & FE_ALL_EXCEPT);
+
+ /* Success. */
+ return 0;
}
+strong_alias (__feupdateenv, __old_feupdateenv)
+symbol_version (__old_feupdateenv, feupdateenv, GLIBC_2.1);
+default_symbol_version (__feupdateenv, feupdateenv, GLIBC_2.1.3);
diff --git a/sysdeps/alpha/fpu/fgetexcptflg.c b/sysdeps/alpha/fpu/fgetexcptflg.c
index 28d9e12..2811d02 100644
--- a/sysdeps/alpha/fpu/fgetexcptflg.c
+++ b/sysdeps/alpha/fpu/fgetexcptflg.c
@@ -1,5 +1,5 @@
/* Store current representation for exceptions.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>, 1997.
@@ -20,14 +20,20 @@
#include <fenv.h>
-void
-fegetexceptflag (fexcept_t *flagp, int excepts)
+int
+__fegetexceptflag (fexcept_t *flagp, int excepts)
{
- unsigned long tmp;
+ unsigned long int tmp;
/* Get the current state. */
tmp = __ieee_get_fp_control();
/* Return that portion that corresponds to the requested exceptions. */
*flagp = tmp & excepts & FE_ALL_EXCEPT;
+
+ /* Success. */
+ return 0;
}
+strong_alias (__fegetexceptflag, __old_fegetexceptflag)
+symbol_version (__old_fegetexceptflag, fegetexceptflag, GLIBC_2.1);
+default_symbol_version (__fegetexceptflag, fegetexceptflag, GLIBC_2.1.3);
diff --git a/sysdeps/alpha/fpu/fraiseexcpt.c b/sysdeps/alpha/fpu/fraiseexcpt.c
index 9b61ddb..bcbc06b 100644
--- a/sysdeps/alpha/fpu/fraiseexcpt.c
+++ b/sysdeps/alpha/fpu/fraiseexcpt.c
@@ -1,5 +1,5 @@
/* Raise given exceptions.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>, 1997.
@@ -22,9 +22,10 @@
#include <math.h>
void
-feraiseexcept (int excepts)
+__feraiseexcept (int excepts)
{
- double tmp, dummy;
+ double tmp;
+ double dummy;
/* Raise exceptions represented by EXPECTS. But we must raise only
one signal at a time. It is important the if the overflow/underflow
@@ -36,38 +37,34 @@ feraiseexcept (int excepts)
/* First: invalid exception. */
if (FE_INVALID & excepts)
- {
- /* One example of a invalid operation is 0 * Infinity. */
- __asm__ __volatile__("mult/sui $f31,%1,%0; trapb"
- : "=&f"(tmp) : "f"(HUGE_VAL));
- }
+ /* One example of a invalid operation is 0 * Infinity. */
+ __asm__ __volatile__("mult/sui $f31,%1,%0; trapb"
+ : "=&f" (tmp) : "f" (HUGE_VAL));
/* Next: division by zero. */
if (FE_DIVBYZERO & excepts)
- {
- __asm__ __volatile__("cmpteq $f31,$f31,%1; divt/sui %1,$f31,%0; trapb"
- : "=&f"(tmp), "=f"(dummy));
- }
+ __asm__ __volatile__("cmpteq $f31,$f31,%1; divt/sui %1,$f31,%0; trapb"
+ : "=&f" (tmp), "=f" (dummy));
/* Next: overflow. */
if (FE_OVERFLOW & excepts)
- {
- __asm__ __volatile__("mult/sui %1,%1,%0; trapb"
- : "=&f"(tmp) : "f"(DBL_MAX));
- }
+ __asm__ __volatile__("mult/sui %1,%1,%0; trapb"
+ : "=&f" (tmp) : "f" (DBL_MAX));
/* Next: underflow. */
if (FE_UNDERFLOW & excepts)
- {
- __asm__ __volatile__("divt/sui %1,%2,%0; trapb"
- : "=&f"(tmp) : "f"(DBL_MIN),
- "f"((double) (1UL << 60)));
- }
+ __asm__ __volatile__("divt/sui %1,%2,%0; trapb"
+ : "=&f" (tmp) : "f" (DBL_MIN),
+ "f" ((double) (1UL << 60)));
/* Last: inexact. */
if (FE_INEXACT & excepts)
- {
- __asm__ __volatile__("divt/sui %1,%2,%0; trapb"
- : "=&f"(tmp) : "f"(1.0), "f"(M_PI));
- }
+ __asm__ __volatile__("divt/sui %1,%2,%0; trapb"
+ : "=&f" (tmp) : "f" (1.0), "f" (M_PI));
+
+ /* Success. */
+ return 0;
}
+strong_alias (__feraiseexcept, __old_feraiseexcept)
+symbol_version (__old_feraiseexcept, feraiseexcept, GLIBC_2.1);
+default_symbol_version (__feraiseexcept, feraiseexcept, GLIBC_2.1.3);
diff --git a/sysdeps/alpha/fpu/fsetexcptflg.c b/sysdeps/alpha/fpu/fsetexcptflg.c
index 5764a6e..eeb987e 100644
--- a/sysdeps/alpha/fpu/fsetexcptflg.c
+++ b/sysdeps/alpha/fpu/fsetexcptflg.c
@@ -1,5 +1,5 @@
/* Set floating-point environment exception handling.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>, 1997.
@@ -20,17 +20,23 @@
#include <fenv.h>
-void
-fesetexceptflag (const fexcept_t *flagp, int excepts)
+int
+__fesetexceptflag (const fexcept_t *flagp, int excepts)
{
- unsigned long tmp;
+ unsigned long int tmp;
/* Get the current exception state. */
- tmp = __ieee_get_fp_control();
+ tmp = __ieee_get_fp_control ();
/* Set all the bits that were called for. */
tmp = (tmp & ~FE_ALL_EXCEPT) | (*flagp & excepts & FE_ALL_EXCEPT);
/* And store it back. */
- __ieee_set_fp_control(tmp);
+ __ieee_set_fp_control (tmp);
+
+ /* Success. */
+ return 0;
}
+strong_alias (__fesetexceptflag, __old_fesetexceptflag)
+symbol_version (__old_fesetexceptflag, fesetexceptflag, GLIBC_2.1);
+default_symbol_version (__fesetexceptflag, fesetexceptflag, GLIBC_2.1.3);