From 38b1c8d235c1e7dd359fa847e9ef5afee239692a Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Wed, 17 Apr 2013 00:29:20 -0700 Subject: [PATCH] Make sure CPSR is updated for IRQ mode properly --- src/arm/arm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/arm/arm.c b/src/arm/arm.c index dc7340bf2..cd25bc133 100644 --- a/src/arm/arm.c +++ b/src/arm/arm.c @@ -122,8 +122,9 @@ void ARMRaiseIRQ(struct ARMCore* cpu) { } else { instructionWidth = WORD_SIZE_ARM; } - ARMSetPrivilegeMode(cpu, MODE_IRQ); cpu->spsr = cpsr; + ARMSetPrivilegeMode(cpu, MODE_IRQ); + cpu->cpsr.priv = MODE_IRQ; cpu->gprs[ARM_LR] = cpu->gprs[ARM_PC] - instructionWidth + WORD_SIZE_ARM; cpu->gprs[ARM_PC] = BASE_IRQ + WORD_SIZE_ARM; cpu->memory->setActiveRegion(cpu->memory, cpu->gprs[ARM_PC]);