Core: Fix handling of BGEZAL ra in recompiler
This commit is contained in:
parent
f6e4443dda
commit
2c6d3429b7
|
@ -759,6 +759,20 @@ void CX86RecompilerOps::Compile_Branch(RecompilerBranchCompare CompareType, bool
|
|||
ResetX86Protection();
|
||||
m_Section->m_Cont.RegSet = m_RegWorkingSet;
|
||||
m_Section->m_Jump.RegSet = m_RegWorkingSet;
|
||||
if (m_Section->m_Cont.LinkAddress != (uint32_t)-1)
|
||||
{
|
||||
m_Section->m_Cont.RegSet.UnMap_GPR(31, false);
|
||||
m_Section->m_Cont.RegSet.SetMipsRegLo(31, m_Section->m_Cont.LinkAddress);
|
||||
m_Section->m_Cont.RegSet.SetMipsRegState(31, CRegInfo::STATE_CONST_32_SIGN);
|
||||
m_Section->m_Cont.LinkAddress = (uint32_t)-1;
|
||||
}
|
||||
if (m_Section->m_Jump.LinkAddress != (uint32_t)-1)
|
||||
{
|
||||
m_Section->m_Jump.RegSet.UnMap_GPR(31, false);
|
||||
m_Section->m_Jump.RegSet.SetMipsRegLo(31, m_Section->m_Jump.LinkAddress);
|
||||
m_Section->m_Jump.RegSet.SetMipsRegState(31, CRegInfo::STATE_CONST_32_SIGN);
|
||||
m_Section->m_Jump.LinkAddress = (uint32_t)-1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -9305,7 +9319,6 @@ void CX86RecompilerOps::OverflowDelaySlot(bool TestTimer)
|
|||
}
|
||||
m_Assembler.MoveConstToVariable(&g_System->m_PipelineStage, "System->m_PipelineStage", PIPELINE_STAGE_JUMP);
|
||||
|
||||
|
||||
if (TestTimer)
|
||||
{
|
||||
m_Assembler.MoveConstToVariable(&R4300iOp::m_TestTimer, "R4300iOp::m_TestTimer", TestTimer);
|
||||
|
|
Loading…
Reference in New Issue