From: Julian Brown Date: Mon, 7 Nov 2016 10:00:24 +0000 (+0000) Subject: Fix corruption of CPSR when SCTLR.EE is set X-Git-Tag: qemu-xen-4.9.0-rc1~85^2~1 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=3823b9db77e753041c04c161ac9f4d4cfc661520;p=qemu-xen.git Fix corruption of CPSR when SCTLR.EE is set Fix a typo in arm_cpu_do_interrupt_aarch32 (OR'ing with ~CPSR_E instead of CPSR_E) which meant that when we took an interrupt with SCTLR.EE set we would corrupt the CPSR. Signed-off-by: Julian Brown Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- diff --git a/target-arm/helper.c b/target-arm/helper.c index 25b15dc100..b5b65caadf 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -6438,7 +6438,7 @@ static void arm_cpu_do_interrupt_aarch32(CPUState *cs) /* Set new mode endianness */ env->uncached_cpsr &= ~CPSR_E; if (env->cp15.sctlr_el[arm_current_el(env)] & SCTLR_EE) { - env->uncached_cpsr |= ~CPSR_E; + env->uncached_cpsr |= CPSR_E; } env->daif |= mask; /* this is a lie, as the was no c1_sys on V4T/V5, but who cares