diff options
Diffstat (limited to 'sim/arm/armemu.c')
-rw-r--r-- | sim/arm/armemu.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sim/arm/armemu.c b/sim/arm/armemu.c index d890cda..acbcb75 100644 --- a/sim/arm/armemu.c +++ b/sim/arm/armemu.c @@ -2864,6 +2864,9 @@ ARMul_Emulate26 (register ARMul_State * state) if (state->Emulate == ONCE) state->Emulate = STOP; + /* If we have changed mode, allow the PC to advance before stopping. */ + else if (state->Emulate == CHANGEMODE) + continue; else if (state->Emulate != RUN) break; } @@ -2872,7 +2875,8 @@ ARMul_Emulate26 (register ARMul_State * state) state->decoded = decoded; state->loaded = loaded; state->pc = pc; - return (pc); + + return pc; } /* Emulate 26/32 in instruction based mode */ |