From 1a2f40e5d14ed6450696feacf04fca5eeceae7ef Mon Sep 17 00:00:00 2001 From: Wilco Date: Thu, 15 May 2014 15:18:40 +0100 Subject: ARM: Improve fenv implementation --- sysdeps/arm/feupdateenv.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'sysdeps/arm/feupdateenv.c') diff --git a/sysdeps/arm/feupdateenv.c b/sysdeps/arm/feupdateenv.c index f5deb60ade..55a15025c6 100644 --- a/sysdeps/arm/feupdateenv.c +++ b/sysdeps/arm/feupdateenv.c @@ -25,24 +25,19 @@ int feupdateenv (const fenv_t *envp) { - if (ARM_HAVE_VFP) - { - unsigned int temp; + fpu_control_t fpscr; - /* Get the current exception state. */ - _FPU_GETCW (temp); + /* Fail if a VFP unit isn't present. */ + if (!ARM_HAVE_VFP) + return 1; - /* Install new environment. */ - fesetenv (envp); + _FPU_GETCW (fpscr); - /* Raise the saved exceptions. */ - feraiseexcept (temp & FE_ALL_EXCEPT); + /* Install new environment. */ + fesetenv (envp); - /* Success. */ - return 0; - } - - /* Unsupported, so fail. */ - return 1; + /* Raise the saved exceptions. */ + feraiseexcept (fpscr & FE_ALL_EXCEPT); + return 0; } libm_hidden_def (feupdateenv) -- cgit v1.2.3-70-g09d2