Skip to content

Commit a4db5d6

Browse files
committed
epsw should be saved during interruption
1 parent 5601f23 commit a4db5d6

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

emulator/src/Chipset/CPU.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -433,13 +433,11 @@ namespace casioemu {
433433
}
434434

435435
void CPU::Raise(size_t exception_level, size_t index) {
436-
if (exception_level == 1)
437-
reg_psw.raw &= ~PSW_MIE;
438-
reg_psw.raw = (reg_psw.raw & ~PSW_ELEVEL) | exception_level;
439-
440436
reg_elr[exception_level].raw = reg_pc.raw;
441437
reg_ecsr[exception_level].raw = reg_csr.raw;
442-
438+
reg_epsw[exception_level].raw = reg_psw.raw;
439+
if (exception_level == 1) reg_psw.raw &= ~PSW_MIE;
440+
reg_psw.raw = (reg_psw.raw & ~PSW_ELEVEL) | exception_level;
443441
reg_csr.raw = 0;
444442
reg_pc.raw = emulator.chipset.mmu.ReadCode(index * 2);
445443
}

0 commit comments

Comments
 (0)