Core: In X86RecompilerOps::CompileCheckFPUResult64 make sure RegPointer is protected
This commit is contained in:
parent
2811b63ff0
commit
45fb2ad965
|
@ -9153,6 +9153,12 @@ void CX86RecompilerOps::CompileCheckFPUResult64(asmjit::x86::Gp RegPointer)
|
||||||
m_Assembler.mov(RegPointerValue, RegPointer);
|
m_Assembler.mov(RegPointerValue, RegPointer);
|
||||||
RegPointer = RegPointerValue;
|
RegPointer = RegPointerValue;
|
||||||
}
|
}
|
||||||
|
bool RegPointerProtect = m_RegWorkingSet.GetX86Protected(GetIndexFromX86Reg(RegPointer));
|
||||||
|
if (!RegPointerProtect)
|
||||||
|
{
|
||||||
|
m_RegWorkingSet.SetX86Protected(GetIndexFromX86Reg(RegPointer), true);
|
||||||
|
}
|
||||||
|
|
||||||
asmjit::x86::Gp TempReg2 = m_RegWorkingSet.Map_TempReg(x86Reg_Unknown, -1, false, false);
|
asmjit::x86::Gp TempReg2 = m_RegWorkingSet.Map_TempReg(x86Reg_Unknown, -1, false, false);
|
||||||
m_Assembler.fnstsw(asmjit::x86::ax);
|
m_Assembler.fnstsw(asmjit::x86::ax);
|
||||||
m_Assembler.and_(asmjit::x86::ax, 0x3D);
|
m_Assembler.and_(asmjit::x86::ax, 0x3D);
|
||||||
|
@ -9207,6 +9213,11 @@ void CX86RecompilerOps::CompileCheckFPUResult64(asmjit::x86::Gp RegPointer)
|
||||||
CompileExit(m_CompilePC + 4, m_CompilePC + 4, ExitRegSet, ExitReason_Normal, false, &CX86Ops::JmpLabel);
|
CompileExit(m_CompilePC + 4, m_CompilePC + 4, ExitRegSet, ExitReason_Normal, false, &CX86Ops::JmpLabel);
|
||||||
m_Assembler.bind(ValueSame);
|
m_Assembler.bind(ValueSame);
|
||||||
m_Assembler.bind(DoNoModify);
|
m_Assembler.bind(DoNoModify);
|
||||||
|
|
||||||
|
if (!RegPointerProtect)
|
||||||
|
{
|
||||||
|
m_RegWorkingSet.SetX86Protected(GetIndexFromX86Reg(RegPointer), false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CX86RecompilerOps::CompileCop1Test()
|
void CX86RecompilerOps::CompileCop1Test()
|
||||||
|
|
Loading…
Reference in New Issue