Make all unknown opcodes behave consistently.
Consistently fall back to the interpreter for unknown instructions, and make sure GetOpInfo() always returns a non-null pointer.
This commit is contained in:
1 parent
e640ef9d7b
commit
985087c7e2
15 files changed
+33
-63
No files matched your search
@@ -305,12 +305,6 @@ void JitIL::WriteCallInterpreter(UGeckoInstruction inst)
|
||||
}
|
||||
}
|
||||
|
||||
void JitIL::unknown_instruction(UGeckoInstruction inst)
|
||||
{
|
||||
// CCPU::Break();
|
||||
PanicAlert("unknown_instruction %08x - Fix me ;)", inst.hex);
|
||||
}
|
||||
|
||||
void JitIL::FallBackToInterpreter(UGeckoInstruction _inst)
|
||||
{
|
||||
ibuild.EmitFallBackToInterpreter(
|
||||
|
||||
@@ -99,7 +99,6 @@ public:
|
||||
void WriteCode(u32 exitAddress);
|
||||
|
||||
// OPCODES
|
||||
void unknown_instruction(UGeckoInstruction _inst) override;
|
||||
void FallBackToInterpreter(UGeckoInstruction _inst) override;
|
||||
void DoNothing(UGeckoInstruction _inst) override;
|
||||
void HLEFunction(UGeckoInstruction _inst) override;
|
||||
|
||||
@@ -403,15 +403,15 @@ void InitTables()
|
||||
//clear
|
||||
for (auto& tpl : dynaOpTable59)
|
||||
{
|
||||
tpl = &JitIL::unknown_instruction;
|
||||
tpl = &JitIL::FallBackToInterpreter;
|
||||
}
|
||||
|
||||
for (int i = 0; i < 1024; i++)
|
||||
{
|
||||
dynaOpTable4 [i] = &JitIL::unknown_instruction;
|
||||
dynaOpTable19[i] = &JitIL::unknown_instruction;
|
||||
dynaOpTable31[i] = &JitIL::unknown_instruction;
|
||||
dynaOpTable63[i] = &JitIL::unknown_instruction;
|
||||
dynaOpTable4 [i] = &JitIL::FallBackToInterpreter;
|
||||
dynaOpTable19[i] = &JitIL::FallBackToInterpreter;
|
||||
dynaOpTable31[i] = &JitIL::FallBackToInterpreter;
|
||||
dynaOpTable63[i] = &JitIL::FallBackToInterpreter;
|
||||
}
|
||||
|
||||
for (auto& tpl : primarytable)
|
||||
|
||||
Reference in new issue
Block a user