Core: in SPECIAL_SYSCALL, SPECIAL_BREAK only exit the block is the stage is PIPELINE_STAGE_NORMAL
This commit is contained in:
parent
ccf708751f
commit
45e52e1d2a
|
@ -4639,14 +4639,20 @@ void CX86RecompilerOps::SPECIAL_SYSCALL()
|
||||||
{
|
{
|
||||||
m_RegWorkingSet.SetBlockCycleCount(m_RegWorkingSet.GetBlockCycleCount() + g_System->CountPerOp());
|
m_RegWorkingSet.SetBlockCycleCount(m_RegWorkingSet.GetBlockCycleCount() + g_System->CountPerOp());
|
||||||
CompileExit(m_CompilePC, m_CompilePC, m_RegWorkingSet, ExitReason_DoSysCall, true, nullptr);
|
CompileExit(m_CompilePC, m_CompilePC, m_RegWorkingSet, ExitReason_DoSysCall, true, nullptr);
|
||||||
m_PipelineStage = PIPELINE_STAGE_END_BLOCK;
|
if (m_PipelineStage == PIPELINE_STAGE_NORMAL)
|
||||||
|
{
|
||||||
|
m_PipelineStage = PIPELINE_STAGE_END_BLOCK;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CX86RecompilerOps::SPECIAL_BREAK()
|
void CX86RecompilerOps::SPECIAL_BREAK()
|
||||||
{
|
{
|
||||||
m_RegWorkingSet.SetBlockCycleCount(m_RegWorkingSet.GetBlockCycleCount() + g_System->CountPerOp());
|
m_RegWorkingSet.SetBlockCycleCount(m_RegWorkingSet.GetBlockCycleCount() + g_System->CountPerOp());
|
||||||
CompileExit(m_CompilePC, m_CompilePC, m_RegWorkingSet, ExitReason_Break, true, nullptr);
|
CompileExit(m_CompilePC, m_CompilePC, m_RegWorkingSet, ExitReason_Break, true, nullptr);
|
||||||
m_PipelineStage = PIPELINE_STAGE_END_BLOCK;
|
if (m_PipelineStage == PIPELINE_STAGE_NORMAL)
|
||||||
|
{
|
||||||
|
m_PipelineStage = PIPELINE_STAGE_END_BLOCK;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CX86RecompilerOps::SPECIAL_SYNC()
|
void CX86RecompilerOps::SPECIAL_SYNC()
|
||||||
|
|
Loading…
Reference in New Issue