From: Richard Henderson Date: Mon, 30 Jun 2014 16:53:46 +0000 (-0700) Subject: target-alpha: Set EXC_M_SWC for exceptions from /S insns X-Git-Tag: v2.4.0-rc0~126^2~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6b6b7b8a775f97edab43eb672d5991f534c2e61;p=thirdparty%2Fqemu.git target-alpha: Set EXC_M_SWC for exceptions from /S insns Previously forgotten, the kernel needs the software completion bit to know that it needs to emulate software completion qualified insns. Reported-by: Al Viro Signed-off-by: Richard Henderson --- diff --git a/target-alpha/fpu_helper.c b/target-alpha/fpu_helper.c index 6e84fd36aaf..914c1d5258e 100644 --- a/target-alpha/fpu_helper.c +++ b/target-alpha/fpu_helper.c @@ -55,10 +55,8 @@ static uint32_t soft_to_fpcr_exc(CPUAlphaState *env) } static void fp_exc_raise1(CPUAlphaState *env, uintptr_t retaddr, - uint32_t exc, uint32_t regno) + uint32_t exc, uint32_t regno, uint32_t hw_exc) { - uint32_t hw_exc = 0; - hw_exc |= CONVERT_BIT(exc, FPCR_INV, EXC_M_INV); hw_exc |= CONVERT_BIT(exc, FPCR_DZE, EXC_M_DZE); hw_exc |= CONVERT_BIT(exc, FPCR_OVF, EXC_M_FOV); @@ -79,7 +77,7 @@ void helper_fp_exc_raise(CPUAlphaState *env, uint32_t ignore, uint32_t regno) env->fpcr |= exc; exc &= ~ignore; if (exc) { - fp_exc_raise1(env, GETPC(), exc, regno); + fp_exc_raise1(env, GETPC(), exc, regno, 0); } } } @@ -93,7 +91,7 @@ void helper_fp_exc_raise_s(CPUAlphaState *env, uint32_t ignore, uint32_t regno) exc &= ~ignore; if (exc) { exc &= env->fpcr_exc_enable; - fp_exc_raise1(env, GETPC(), exc, regno); + fp_exc_raise1(env, GETPC(), exc, regno, EXC_M_SWC); } } }