mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-03 04:01:43 +08:00
Use <fenv_libc.h>.
This commit is contained in:
parent
4b84abdd3e
commit
c9bca5114f
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
__feclearexcept (int excepts)
|
||||
@ -29,7 +29,7 @@ __feclearexcept (int excepts)
|
||||
swcr = __ieee_get_fp_control ();
|
||||
|
||||
/* Clear the relevant bits. */
|
||||
swcr &= ~((unsigned long int) excepts & FE_ALL_EXCEPT);
|
||||
swcr &= ~((unsigned long int) excepts & SWCR_STATUS_MASK);
|
||||
|
||||
/* Put the new state in effect. */
|
||||
__ieee_set_fp_control (swcr);
|
||||
|
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
fedisableexcept (int excepts)
|
||||
@ -27,8 +27,8 @@ fedisableexcept (int excepts)
|
||||
|
||||
new_exc = __ieee_get_fp_control ();
|
||||
|
||||
old_exc = (new_exc << 16) & FE_ALL_EXCEPT;
|
||||
new_exc &= ~((excepts & FE_ALL_EXCEPT) >> 16);
|
||||
old_exc = (new_exc & SWCR_ENABLE_MASK) << SWCR_ENABLE_SHIFT;
|
||||
new_exc &= ~((excepts >> SWCR_ENABLE_SHIFT) & SWCR_ENABLE_MASK);
|
||||
|
||||
__ieee_set_fp_control (new_exc);
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
feenableexcept (int excepts)
|
||||
@ -27,8 +27,8 @@ feenableexcept (int excepts)
|
||||
|
||||
new_exc = __ieee_get_fp_control ();
|
||||
|
||||
old_exc = (new_exc << 16) & FE_ALL_EXCEPT;
|
||||
new_exc |= (excepts & FE_ALL_EXCEPT) >> 16;
|
||||
old_exc = (new_exc & SWCR_ENABLE_MASK) << SWCR_ENABLE_SHIFT;
|
||||
new_exc |= (excepts >> SWCR_ENABLE_SHIFT) & SWCR_ENABLE_MASK;
|
||||
|
||||
__ieee_set_fp_control (new_exc);
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
__fegetenv (fenv_t *envp)
|
||||
@ -31,10 +31,8 @@ __fegetenv (fenv_t *envp)
|
||||
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));
|
||||
/* Merge the two bits of information. */
|
||||
*envp = ((fpcr & FPCR_ROUND_MASK) | (swcr & SWCR_ALL_MASK));
|
||||
|
||||
/* Success. */
|
||||
return 0;
|
||||
|
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
fegetexcept (void)
|
||||
@ -27,5 +27,5 @@ fegetexcept (void)
|
||||
|
||||
exc = __ieee_get_fp_control ();
|
||||
|
||||
return (exc << 16) & FE_ALL_EXCEPT;
|
||||
return (exc & SWCR_ENABLE_MASK) << SWCR_ENABLE_SHIFT;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Return current rounding direction.
|
||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <rth@tamu.edu>, 1997
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
fegetround (void)
|
||||
@ -27,5 +27,5 @@ fegetround (void)
|
||||
|
||||
__asm__ __volatile__("excb; mf_fpcr %0" : "=f"(fpcr));
|
||||
|
||||
return (fpcr >> 58) & 3;
|
||||
return (fpcr >> FPCR_ROUND_SHIFT) & 3;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Store current floating-point environment and clear exceptions.
|
||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <rth@tamu.edu>, 1997
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
feholdexcept (fenv_t *envp)
|
||||
@ -27,7 +27,7 @@ feholdexcept (fenv_t *envp)
|
||||
fegetenv(envp);
|
||||
|
||||
/* Clear all exception status bits and exception enable bits. */
|
||||
__ieee_set_fp_control(0);
|
||||
__ieee_set_fp_control(*envp & SWCR_MAP_MASK);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
__fesetenv (const fenv_t *envp)
|
||||
@ -37,11 +37,11 @@ __fesetenv (const fenv_t *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));
|
||||
fpcr = (fpcr & ~(3UL << 58)) | (env & (3UL << 58));
|
||||
fpcr = (fpcr & ~FPCR_ROUND_MASK) | (env & FPCR_ROUND_MASK);
|
||||
__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 & SWCR_ALL_MASK);
|
||||
|
||||
/* Success. */
|
||||
return 0;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Set current rounding direction.
|
||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <rth@tamu.edu>, 1997
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
fesetround (int round)
|
||||
@ -32,7 +32,8 @@ fesetround (int round)
|
||||
__asm__ __volatile__("excb; mf_fpcr %0" : "=f"(fpcr));
|
||||
|
||||
/* Set the relevant bits. */
|
||||
fpcr = (fpcr & ~(3UL << 58)) | ((unsigned long)round << 58);
|
||||
fpcr = ((fpcr & ~FPCR_ROUND_MASK)
|
||||
| ((unsigned long)round << FPCR_ROUND_SHIFT));
|
||||
|
||||
/* Put the new state in effect. */
|
||||
__asm__ __volatile__("mt_fpcr %0; excb" : : "f"(fpcr));
|
||||
|
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
__feupdateenv (const fenv_t *envp)
|
||||
@ -34,7 +34,7 @@ __feupdateenv (const fenv_t *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 (tmp & SWCR_STATUS_MASK);
|
||||
|
||||
/* Success. */
|
||||
return 0;
|
||||
|
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
__fegetexceptflag (fexcept_t *flagp, int excepts)
|
||||
@ -29,7 +29,7 @@ __fegetexceptflag (fexcept_t *flagp, int excepts)
|
||||
tmp = __ieee_get_fp_control();
|
||||
|
||||
/* Return that portion that corresponds to the requested exceptions. */
|
||||
*flagp = tmp & excepts & FE_ALL_EXCEPT;
|
||||
*flagp = tmp & excepts & SWCR_STATUS_MASK;
|
||||
|
||||
/* Success. */
|
||||
return 0;
|
||||
|
@ -18,8 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <math.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
__feraiseexcept (int excepts)
|
||||
@ -30,7 +29,7 @@ __feraiseexcept (int excepts)
|
||||
tmp = __ieee_get_fp_control ();
|
||||
|
||||
/* Set all the bits that were called for. */
|
||||
tmp |= (excepts & FE_ALL_EXCEPT);
|
||||
tmp |= (excepts & SWCR_STATUS_MASK);
|
||||
|
||||
/* And store it back. */
|
||||
__ieee_set_fp_control (tmp);
|
||||
|
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
__fesetexceptflag (const fexcept_t *flagp, int excepts)
|
||||
@ -29,7 +29,7 @@ __fesetexceptflag (const fexcept_t *flagp, int excepts)
|
||||
tmp = __ieee_get_fp_control ();
|
||||
|
||||
/* Set all the bits that were called for. */
|
||||
tmp = (tmp & ~FE_ALL_EXCEPT) | (*flagp & excepts & FE_ALL_EXCEPT);
|
||||
tmp = (tmp & ~SWCR_STATUS_MASK) | (*flagp & excepts & SWCR_STATUS_MASK);
|
||||
|
||||
/* And store it back. */
|
||||
__ieee_set_fp_control (tmp);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Test exception in current environment.
|
||||
Copyright (C) 1997 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 2000 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <rth@tamu.edu>, 1997.
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <fenv.h>
|
||||
#include <fenv_libc.h>
|
||||
|
||||
int
|
||||
fetestexcept (int excepts)
|
||||
@ -28,5 +28,5 @@ fetestexcept (int excepts)
|
||||
/* Get current exceptions. */
|
||||
tmp = __ieee_get_fp_control();
|
||||
|
||||
return tmp & excepts & FE_ALL_EXCEPT;
|
||||
return tmp & excepts & SWCR_STATUS_MASK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user