Cleaned up the FPU exception stuff - was

not functional before. Also removed all SHLIB_COMPAT stuff.
This commit is contained in:
Andreas Jaeger 2002-09-10 11:24:50 +00:00
parent af43a56542
commit 0752643673
6 changed files with 16 additions and 57 deletions

View File

@ -21,10 +21,9 @@
#include <fenv.h>
#include <fenv_libc.h>
#include <fpu_control.h>
#include <shlib-compat.h>
int
__feclearexcept (int excepts)
feclearexcept (int excepts)
{
int cw;
@ -35,8 +34,8 @@ __feclearexcept (int excepts)
_FPU_GETCW (cw);
/* Clear exception flag bits and cause bits. If the cause bit is not
cleared, the next CTC instruction (just below) will re-generate
the exception. */
cleared, the next CTC instruction (just below) will re-generate the
exception. */
cw &= ~(excepts | (excepts << CAUSE_SHIFT));
@ -46,9 +45,3 @@ __feclearexcept (int excepts)
/* Success. */
return 0;
}
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__feclearexcept, __old_feclearexcept)
compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1);
#endif
versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2);

View File

@ -1,5 +1,5 @@
/* Store current floating-point environment.
Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1998.
@ -20,18 +20,12 @@
#include <fenv.h>
#include <fpu_control.h>
#include <shlib-compat.h>
int
__fegetenv (fenv_t *envp)
fegetenv (fenv_t *envp)
{
_FPU_GETCW (*envp);
/* Success. */
return 0;
}
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__fegetenv, __old_fegetenv)
compat_symbol (libm, __old_fegetenv, fegetenv, GLIBC_2_1);
#endif
versioned_symbol (libm, __fegetenv, fegetenv, GLIBC_2_2);

View File

@ -20,10 +20,9 @@
#include <fenv.h>
#include <fpu_control.h>
#include <shlib-compat.h>
int
__fesetenv (const fenv_t *envp)
fesetenv (const fenv_t *envp)
{
fpu_control_t cw;
@ -40,10 +39,3 @@ __fesetenv (const fenv_t *envp)
/* Success. */
return 0;
}
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__fesetenv, __old_fesetenv)
compat_symbol (libm, __old_fesetenv, fesetenv, GLIBC_2_1);
#endif
libm_hidden_ver (__fesetenv, fesetenv)
versioned_symbol (libm, __fesetenv, fesetenv, GLIBC_2_2);

View File

@ -1,5 +1,5 @@
/* Install given floating-point environment and raise exceptions.
Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1998.
@ -20,10 +20,9 @@
#include <fenv.h>
#include <fpu_control.h>
#include <shlib-compat.h>
int
__feupdateenv (const fenv_t *envp)
feupdateenv (const fenv_t *envp)
{
int temp;
@ -42,8 +41,3 @@ __feupdateenv (const fenv_t *envp)
/* Success. */
return 0;
}
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__feupdateenv, __old_feupdateenv)
compat_symbol (libm, __old_feupdateenv, feupdateenv, GLIBC_2_1);
#endif
versioned_symbol (libm, __feupdateenv, feupdateenv, GLIBC_2_2);

View File

@ -20,27 +20,21 @@
#include <fenv.h>
#include <fpu_control.h>
#include <shlib-compat.h>
int
__fegetexceptflag (fexcept_t *flagp, int excepts)
fegetexceptflag (fexcept_t *flagp, int excepts)
{
fexcept_t temp;
/* Get the current exceptions. */
_FPU_GETCW (temp);
/* It is important that the CAUSE bits are not saved here. If they
were, a call to fesetexceptflag() would generate an
exception. */
/* We only save the relevant bits here. In particular, care has to be
taken with the CAUSE bits, as an inadvertent restore later on could
generate unexpected exceptions. */
*flagp = temp & excepts & FE_ALL_EXCEPT;
/* Success. */
return 0;
}
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__fegetexceptflag, __old_fegetexceptflag)
compat_symbol (libm, __old_fegetexceptflag, fegetexceptflag, GLIBC_2_1);
#endif
versioned_symbol (libm, __fegetexceptflag, fegetexceptflag, GLIBC_2_2);

View File

@ -21,19 +21,18 @@
#include <fenv.h>
#include <fenv_libc.h>
#include <fpu_control.h>
#include <shlib-compat.h>
int
__feraiseexcept (int excepts)
feraiseexcept (int excepts)
{
fpu_control_t cw;
/* Get current state. */
_FPU_GETCW (cw);
/* Set flag bits (which are accumulative), and *also* set the cause
bits. The setting of the cause bits is what actually causes the
hardware to generate the exception, if the corresponding enable
/* Set flag bits (which are accumulative), and *also* set the
cause bits. The setting of the cause bits is what actually causes
the hardware to generate the exception, if the corresponding enable
bit is set as well. */
excepts &= FE_ALL_EXCEPT;
@ -44,10 +43,3 @@ __feraiseexcept (int excepts)
return 0;
}
#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2)
strong_alias (__feraiseexcept, __old_feraiseexcept)
compat_symbol (libm, __old_feraiseexcept, feraiseexcept, GLIBC_2_1);
#endif
libm_hidden_ver (__feraiseexcept, feraiseexcept)
versioned_symbol (libm, __feraiseexcept, feraiseexcept, GLIBC_2_2);