target-arm: Clear IT bits when taking exceptions in v7M
When taking an exception for an M profile core, we must clear the IT bits. Since the IT bits are cached in env->condexec_bits we must clear them there: writing the bits in env->uncached_cpsr has no effect. (Reported as LP:944645.) Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
4de47793d4
commit
c98d174c24
@ -877,7 +877,8 @@ static void do_interrupt_v7m(CPUARMState *env)
|
||||
v7m_push(env, env->regs[1]);
|
||||
v7m_push(env, env->regs[0]);
|
||||
switch_v7m_sp(env, 0);
|
||||
env->uncached_cpsr &= ~CPSR_IT;
|
||||
/* Clear IT bits */
|
||||
env->condexec_bits = 0;
|
||||
env->regs[14] = lr;
|
||||
addr = ldl_phys(env->v7m.vecbase + env->v7m.exception * 4);
|
||||
env->regs[15] = addr & 0xfffffffe;
|
||||
|
Loading…
Reference in New Issue
Block a user