mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-30 09:35:40 +00:00
CPU: Don't panic on invalid instructions
This commit is contained in:
parent
2548f75267
commit
4f09d61825
|
@ -1421,7 +1421,7 @@ restart_instruction:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Panic("Missing implementation");
|
Log_ErrorPrintf("Unhandled instruction at %08X: %08X", g_state.current_instruction_pc, inst.bits);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1438,8 +1438,15 @@ restart_instruction:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case Cop0Instruction::tlbr:
|
||||||
|
case Cop0Instruction::tlbwi:
|
||||||
|
case Cop0Instruction::tlbwr:
|
||||||
|
case Cop0Instruction::tlbp:
|
||||||
|
RaiseException(Exception::RI);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Panic("Missing implementation");
|
Log_ErrorPrintf("Unhandled instruction at %08X: %08X", g_state.current_instruction_pc, inst.bits);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1500,9 +1507,8 @@ restart_instruction:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CopCommonInstruction::bcnc:
|
|
||||||
default:
|
default:
|
||||||
Panic("Missing implementation");
|
Log_ErrorPrintf("Unhandled instruction at %08X: %08X", g_state.current_instruction_pc, inst.bits);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,12 +158,11 @@ static const std::array<const char*, 64> s_special_table = {{
|
||||||
"UNKNOWN" // 63
|
"UNKNOWN" // 63
|
||||||
}};
|
}};
|
||||||
|
|
||||||
static const std::array<std::pair<CopCommonInstruction, const char*>, 5> s_cop_common_table = {
|
static const std::array<std::pair<CopCommonInstruction, const char*>, 4> s_cop_common_table = {
|
||||||
{{CopCommonInstruction::mfcn, "mfc$cop $rt, $coprd"},
|
{{CopCommonInstruction::mfcn, "mfc$cop $rt, $coprd"},
|
||||||
{CopCommonInstruction::cfcn, "cfc$cop $rt, $coprd"},
|
{CopCommonInstruction::cfcn, "cfc$cop $rt, $coprd"},
|
||||||
{CopCommonInstruction::mtcn, "mtc$cop $rt, $coprd"},
|
{CopCommonInstruction::mtcn, "mtc$cop $rt, $coprd"},
|
||||||
{CopCommonInstruction::ctcn, "ctc$cop $rt, $coprd"},
|
{CopCommonInstruction::ctcn, "ctc$cop $rt, $coprd"}}};
|
||||||
{CopCommonInstruction::bcnc, "bc$cop$copcc $rel"}}};
|
|
||||||
|
|
||||||
static const std::array<std::pair<Cop0Instruction, const char*>, 1> s_cop0_table = {{{Cop0Instruction::rfe, "rfe"}}};
|
static const std::array<std::pair<Cop0Instruction, const char*>, 1> s_cop0_table = {{{Cop0Instruction::rfe, "rfe"}}};
|
||||||
|
|
||||||
|
|
|
@ -154,7 +154,6 @@ enum class CopCommonInstruction : u32
|
||||||
cfcn = 0b0010,
|
cfcn = 0b0010,
|
||||||
mtcn = 0b0100,
|
mtcn = 0b0100,
|
||||||
ctcn = 0b0110,
|
ctcn = 0b0110,
|
||||||
bcnc = 0b1000,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class Cop0Instruction : u32
|
enum class Cop0Instruction : u32
|
||||||
|
|
Loading…
Reference in a new issue