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 <julian@codesourcery.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
3bc4b52ccd
commit
3823b9db77
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user