From 85df2029485a8da65053881b5bf9069efcbfc3fd Mon Sep 17 00:00:00 2001 From: bellard Date: Sun, 18 Dec 2005 16:54:08 +0000 Subject: [PATCH] switching to Arm mode in do_interrupt() (Paul Brook) --- target-arm/helper.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/target-arm/helper.c b/target-arm/helper.c index 9cf159c07..538e17a35 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -162,10 +162,11 @@ void do_interrupt(CPUARMState *env) } switch_mode (env, new_mode); env->spsr = cpsr_read(env); - /* Switch to the new mode, and clear the thumb bit. */ + /* Switch to the new mode, and switch to Arm mode. */ /* ??? Thumb interrupt handlers not implemented. */ - env->uncached_cpsr = (env->uncached_cpsr & ~(CPSR_M | CPSR_T)) | new_mode; + env->uncached_cpsr = (env->uncached_cpsr & ~CPSR_M) | new_mode; env->uncached_cpsr |= mask; + env->thumb = 0; env->regs[14] = env->regs[15] + offset; env->regs[15] = addr; env->interrupt_request |= CPU_INTERRUPT_EXITTB; -- 2.39.5