hppa: Fix fesetenv for FE_DFL_ENV.

Switching back to FE_DFL_ENV should reset the FPU to the state
as it was at the start of the program.
This commit is contained in:
Carlos O'Donell 2012-11-19 00:44:00 -05:00
parent 886ce148c0
commit da66ca0fc0
2 changed files with 5 additions and 10 deletions

View File

@ -1,5 +1,7 @@
2012-11-18 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/hppa/fpu/fesetenv.c: Reset FPU to default for FE_DFL_ENV.
* sysdeps/hppa/get-rounding-mode.h: New file.
* sysdeps/hppa/fpu/fegetround.c: Use get_rounding_mode.

View File

@ -1,5 +1,5 @@
/* Return current rounding direction.
Copyright (C) 2000 Free Software Foundation, Inc.
Copyright (C) 2000-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Huggins-Daines <dhd@debian.org>, 2000
@ -17,17 +17,10 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
#include <fenv.h>
#include <get-rounding-mode.h>
int
fegetround (void)
{
union { unsigned long long l; unsigned int sw[2] } s;
/* Get the current status word. */
__asm__ ("fstd %%fr0,0(%1) \n\t"
"fldd 0(%1),%%fr0 \n\t"
: "=m" (s.l) : "r" (&s.l));
return (s.sw[0] & FE_DOWNWARD);
return get_rounding_mode ();
}