Core: Add exit reason exception
This commit is contained in:
parent
703ad4049a
commit
e49438cdab
|
@ -21,6 +21,7 @@ enum ExitReason
|
|||
ExitReason_AddressErrorExceptionRead32,
|
||||
ExitReason_AddressErrorExceptionRead64,
|
||||
ExitReason_IllegalInstruction,
|
||||
ExitReason_Exception,
|
||||
};
|
||||
|
||||
struct CExitInfo
|
||||
|
|
|
@ -9559,6 +9559,17 @@ void CX86RecompilerOps::CompileExit(uint32_t JumpPC, uint32_t TargetPC, CRegInfo
|
|||
m_Assembler.MoveConstToVariable(&g_System->m_PipelineStage, "g_System->m_PipelineStage", PIPELINE_STAGE_NORMAL);
|
||||
ExitCodeBlock();
|
||||
break;
|
||||
case ExitReason_Exception:
|
||||
m_Assembler.MoveVariableToX86reg(asmjit::x86::edx, &g_System->m_JumpToLocation, "System->m_JumpToLocation");
|
||||
m_Assembler.MoveX86regToVariable(&g_Reg->m_PROGRAM_COUNTER, "PROGRAM_COUNTER", asmjit::x86::edx);
|
||||
m_Assembler.MoveConstToVariable(&g_System->m_PipelineStage, "g_System->m_PipelineStage", PIPELINE_STAGE_NORMAL);
|
||||
if (TargetPC == (uint32_t)-1)
|
||||
{
|
||||
ExitRegSet.SetBlockCycleCount(0);
|
||||
UpdateCounters(ExitRegSet, true, false, false);
|
||||
}
|
||||
ExitCodeBlock();
|
||||
break;
|
||||
default:
|
||||
WriteTrace(TraceRecompiler, TraceError, "How did you want to exit on reason (%d) ???", reason);
|
||||
g_Notify->BreakPoint(__FILE__, __LINE__);
|
||||
|
|
Loading…
Reference in New Issue