diff mbox series

[7/7] target/alpha: Tidy helper_fp_exc_raise_s

Message ID 20190921043256.4575-8-richard.henderson@linaro.org
State Superseded
Headers show
Series target/alpha: Fix linux-user exception for CVTTQ | expand

Commit Message

Richard Henderson Sept. 21, 2019, 4:32 a.m. UTC
Remove a redundant masking of ignore.  Once that's gone it is
obvious that the system-mode inner test is redundant with the
outer test.  Move the fpcr_exc_enable masking up and tidy.

No functional change.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

---
 target/alpha/fpu_helper.c | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

-- 
2.17.1

Comments

Philippe Mathieu-Daudé Sept. 21, 2019, 8:57 a.m. UTC | #1
On 9/21/19 6:32 AM, Richard Henderson wrote:
> Remove a redundant masking of ignore.  Once that's gone it is

> obvious that the system-mode inner test is redundant with the

> outer test.  Move the fpcr_exc_enable masking up and tidy.

> 

> No functional change.

> 

> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>


> ---

>  target/alpha/fpu_helper.c | 15 ++++-----------

>  1 file changed, 4 insertions(+), 11 deletions(-)

> 

> diff --git a/target/alpha/fpu_helper.c b/target/alpha/fpu_helper.c

> index 62a066d902..df8b58963b 100644

> --- a/target/alpha/fpu_helper.c

> +++ b/target/alpha/fpu_helper.c

> @@ -90,25 +90,18 @@ void helper_fp_exc_raise_s(CPUAlphaState *env, uint32_t ignore, uint32_t regno)

>      uint32_t exc = env->error_code & ~ignore;

>      if (exc) {

>          env->fpcr |= exc;

> -        exc &= ~ignore;

> -#ifdef CONFIG_USER_ONLY

> -        /*

> -         * In user mode, the kernel's software handler only

> -         * delivers a signal if the exception is enabled.

> -         */

> -        if (!(exc & env->fpcr_exc_enable)) {

> -            return;

> -        }

> -#else

> +        exc &= env->fpcr_exc_enable;

>          /*

>           * In system mode, the software handler gets invoked

>           * for any non-ignored exception.

> +         * In user mode, the kernel's software handler only

> +         * delivers a signal if the exception is enabled.

>           */

> +#ifdef CONFIG_USER_ONLY

>          if (!exc) {

>              return;

>          }

>  #endif

> -        exc &= env->fpcr_exc_enable;

>          fp_exc_raise1(env, GETPC(), exc, regno, EXC_M_SWC);

>      }

>  }

>
Alex Bennée Sept. 23, 2019, 4:40 p.m. UTC | #2
Richard Henderson <richard.henderson@linaro.org> writes:

> Remove a redundant masking of ignore.  Once that's gone it is

> obvious that the system-mode inner test is redundant with the

> outer test.  Move the fpcr_exc_enable masking up and tidy.

>

> No functional change.

>

> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


Reviewed-by: Alex Bennée <alex.bennee@linaro.org>


> ---

>  target/alpha/fpu_helper.c | 15 ++++-----------

>  1 file changed, 4 insertions(+), 11 deletions(-)

>

> diff --git a/target/alpha/fpu_helper.c b/target/alpha/fpu_helper.c

> index 62a066d902..df8b58963b 100644

> --- a/target/alpha/fpu_helper.c

> +++ b/target/alpha/fpu_helper.c

> @@ -90,25 +90,18 @@ void helper_fp_exc_raise_s(CPUAlphaState *env, uint32_t ignore, uint32_t regno)

>      uint32_t exc = env->error_code & ~ignore;

>      if (exc) {

>          env->fpcr |= exc;

> -        exc &= ~ignore;

> -#ifdef CONFIG_USER_ONLY

> -        /*

> -         * In user mode, the kernel's software handler only

> -         * delivers a signal if the exception is enabled.

> -         */

> -        if (!(exc & env->fpcr_exc_enable)) {

> -            return;

> -        }

> -#else

> +        exc &= env->fpcr_exc_enable;

>          /*

>           * In system mode, the software handler gets invoked

>           * for any non-ignored exception.

> +         * In user mode, the kernel's software handler only

> +         * delivers a signal if the exception is enabled.

>           */

> +#ifdef CONFIG_USER_ONLY

>          if (!exc) {

>              return;

>          }

>  #endif

> -        exc &= env->fpcr_exc_enable;

>          fp_exc_raise1(env, GETPC(), exc, regno, EXC_M_SWC);

>      }

>  }



--
Alex Bennée
diff mbox series

Patch

diff --git a/target/alpha/fpu_helper.c b/target/alpha/fpu_helper.c
index 62a066d902..df8b58963b 100644
--- a/target/alpha/fpu_helper.c
+++ b/target/alpha/fpu_helper.c
@@ -90,25 +90,18 @@  void helper_fp_exc_raise_s(CPUAlphaState *env, uint32_t ignore, uint32_t regno)
     uint32_t exc = env->error_code & ~ignore;
     if (exc) {
         env->fpcr |= exc;
-        exc &= ~ignore;
-#ifdef CONFIG_USER_ONLY
-        /*
-         * In user mode, the kernel's software handler only
-         * delivers a signal if the exception is enabled.
-         */
-        if (!(exc & env->fpcr_exc_enable)) {
-            return;
-        }
-#else
+        exc &= env->fpcr_exc_enable;
         /*
          * In system mode, the software handler gets invoked
          * for any non-ignored exception.
+         * In user mode, the kernel's software handler only
+         * delivers a signal if the exception is enabled.
          */
+#ifdef CONFIG_USER_ONLY
         if (!exc) {
             return;
         }
 #endif
-        exc &= env->fpcr_exc_enable;
         fp_exc_raise1(env, GETPC(), exc, regno, EXC_M_SWC);
     }
 }