From: Carlos O'Donell Date: Mon, 19 Nov 2012 05:44:00 +0000 (-0500) Subject: hppa: Fix fesetenv for FE_DFL_ENV. X-Git-Tag: upstream/2.20~2936 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=da66ca0fc0d099b381b0bee96eae9be378417e0e;p=platform%2Fupstream%2Flinaro-glibc.git 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. --- diff --git a/ports/ChangeLog.hppa b/ports/ChangeLog.hppa index 4088793..3f7bd6e 100644 --- a/ports/ChangeLog.hppa +++ b/ports/ChangeLog.hppa @@ -1,5 +1,7 @@ 2012-11-18 Carlos O'Donell + * 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. diff --git a/ports/sysdeps/hppa/fpu/fegetround.c b/ports/sysdeps/hppa/fpu/fegetround.c index 70d2e47..d603e66 100644 --- a/ports/sysdeps/hppa/fpu/fegetround.c +++ b/ports/sysdeps/hppa/fpu/fegetround.c @@ -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 , 2000 @@ -17,17 +17,10 @@ License along with the GNU C Library. If not, see . */ -#include +#include 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 (); }