diff --git a/src/arm/arm.c b/src/arm/arm.c index cd25bc133..cf3de6c01 100644 --- a/src/arm/arm.c +++ b/src/arm/arm.c @@ -122,13 +122,13 @@ void ARMRaiseIRQ(struct ARMCore* cpu) { } else { instructionWidth = WORD_SIZE_ARM; } - 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]); _ARMSetMode(cpu, MODE_ARM); + cpu->spsr = cpsr; cpu->cpsr.i = 1; }