target/alpha: Tidy helper_fp_exc_raise_s

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>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190921043256.4575-8-richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2019-09-20 21:32:56 -07:00 committed by Alex Bennée
parent 8009307031
commit 11bfdbdfc2

View File

@ -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; uint32_t exc = env->error_code & ~ignore;
if (exc) { if (exc) {
env->fpcr |= exc; env->fpcr |= exc;
exc &= ~ignore; exc &= env->fpcr_exc_enable;
#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
/* /*
* In system mode, the software handler gets invoked * In system mode, the software handler gets invoked
* for any non-ignored exception. * 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) { if (!exc) {
return; return;
} }
#endif #endif
exc &= env->fpcr_exc_enable;
fp_exc_raise1(env, GETPC(), exc, regno, EXC_M_SWC); fp_exc_raise1(env, GETPC(), exc, regno, EXC_M_SWC);
} }
} }