Reset RSP steps on BREAK

This commit is contained in:
Simone Coco
2022-10-11 11:47:49 +02:00
parent 0ac6f07054
commit eafebc4c28

View File

@@ -23,6 +23,7 @@ inline void special(MI& mi, Registers& regs, RSP& rsp, u32 instr) {
case 0x09: rsp.jalr(instr); break; case 0x09: rsp.jalr(instr); break;
case 0x0D: case 0x0D:
rsp.spStatus.halt = true; rsp.spStatus.halt = true;
rsp.steps = 0;
rsp.spStatus.broke = true; rsp.spStatus.broke = true;
if(rsp.spStatus.interruptOnBreak) { if(rsp.spStatus.interruptOnBreak) {
InterruptRaise(mi, regs, Interrupt::SP); InterruptRaise(mi, regs, Interrupt::SP);
@@ -160,10 +161,14 @@ inline void cop0(Registers& regs, Mem& mem, u32 instr) {
RSP& rsp = mmio.rsp; RSP& rsp = mmio.rsp;
RDP& rdp = mmio.rdp; RDP& rdp = mmio.rdp;
//util::print("Cop0 {:02X}\n", mask); //util::print("Cop0 {:02X}\n", mask);
switch(mask) { if((instr & 0x7FF) == 0) {
case 0x00: rsp.mfc0(rdp, instr); break; switch (mask) {
case 0x04: rsp.mtc0(regs, mem, instr); break; case 0x00: rsp.mfc0(rdp, instr); break;
default: util::panic("Unhandled RSP COP0 ({:05b})\n", mask); case 0x04: rsp.mtc0(regs, mem, instr); break;
default: util::panic("Unhandled RSP COP0 ({:05b})\n", mask);
}
} else {
util::panic("RSP COP0 unknown {:08X}\n", instr);
} }
} }