diff options
author | Marcus Shawcroft <marcus.shawcroft@arm.com> | 2014-05-19 09:08:59 +0100 |
---|---|---|
committer | Marcus Shawcroft <marcus.shawcroft@arm.com> | 2014-05-19 09:08:59 +0100 |
commit | 18f8524d2cf5e9f699055ed2c2cdeb56cd3b4cc4 (patch) | |
tree | 92b5d3167160de1067a52ba0fec81393f8e196cf /sysdeps/arm/feupdateenv.c | |
parent | 834caf06f33d79be54cff63c274fba2845513593 (diff) | |
download | glibc-18f8524d2cf5e9f699055ed2c2cdeb56cd3b4cc4.zip glibc-18f8524d2cf5e9f699055ed2c2cdeb56cd3b4cc4.tar.gz glibc-18f8524d2cf5e9f699055ed2c2cdeb56cd3b4cc4.tar.bz2 |
Revert "ARM: Improve fenv implementation"
This reverts commit c0c08d02c82275353f5c556f935a1a01714d9d7f.
Diffstat (limited to 'sysdeps/arm/feupdateenv.c')
-rw-r--r-- | sysdeps/arm/feupdateenv.c | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/sysdeps/arm/feupdateenv.c b/sysdeps/arm/feupdateenv.c index 2a7b3ec..55a1502 100644 --- a/sysdeps/arm/feupdateenv.c +++ b/sysdeps/arm/feupdateenv.c @@ -17,35 +17,27 @@ License along with the GNU C Library. If not, see <http://www.gnu.org/licenses/>. */ -#include <fenv_private.h> +#include <fenv.h> +#include <fpu_control.h> #include <arm-features.h> int feupdateenv (const fenv_t *envp) { - fenv_t fenv; + fpu_control_t fpscr; /* Fail if a VFP unit isn't present. */ if (!ARM_HAVE_VFP) return 1; - if ((envp == FE_DFL_ENV) || (envp == FE_NOMASK_ENV)) - { - fpu_control_t fpscr; + _FPU_GETCW (fpscr); - _FPU_GETCW (fpscr); + /* Install new environment. */ + fesetenv (envp); - /* Preserve the reserved FPSCR flags. */ - fpscr &= _FPU_RESERVED; - fpscr |= (envp == FE_DFL_ENV) ? _FPU_DEFAULT : _FPU_IEEE; - - /* Create a valid fenv to pass to libc_feupdateenv_vfp. */ - fenv.__cw = fpscr; - envp = &fenv; - } - - libc_feupdateenv_vfp (envp); + /* Raise the saved exceptions. */ + feraiseexcept (fpscr & FE_ALL_EXCEPT); return 0; } libm_hidden_def (feupdateenv) |