Fix entering SWI mode
Jeffrey Pfau jeffrey@endrift.com
Sat, 27 Apr 2013 02:50:35 -0700
1 files changed,
1 insertions(+),
1 deletions(-)
jump to
M
src/arm/arm.c
→
src/arm/arm.c
@@ -145,7 +145,7 @@ instructionWidth = WORD_SIZE_ARM;
} ARMSetPrivilegeMode(cpu, MODE_SUPERVISOR); cpu->cpsr.priv = MODE_IRQ; - cpu->gprs[ARM_LR] = cpu->gprs[ARM_PC] - instructionWidth + WORD_SIZE_ARM; + cpu->gprs[ARM_LR] = cpu->gprs[ARM_PC] - instructionWidth; cpu->gprs[ARM_PC] = BASE_SWI + WORD_SIZE_ARM; cpu->memory->setActiveRegion(cpu->memory, cpu->gprs[ARM_PC]); _ARMSetMode(cpu, MODE_ARM);