Core: CompileCheckFPUInput32 and CompileCheckFPUResult32 should not be updating esp since using callthis
This commit is contained in:
parent
b263ee10b0
commit
8e54ec8c8e
|
@ -8620,8 +8620,7 @@ void CX86RecompilerOps::CompileCheckFPUInput32(asmjit::x86::Gp RegPointer)
|
||||||
m_Assembler.MoveConstToVariable(&g_System->m_PipelineStage, "System->m_PipelineStage", m_PipelineStage == PIPELINE_STAGE_JUMP || m_PipelineStage == PIPELINE_STAGE_DELAY_SLOT ? PIPELINE_STAGE_JUMP : PIPELINE_STAGE_NORMAL);
|
m_Assembler.MoveConstToVariable(&g_System->m_PipelineStage, "System->m_PipelineStage", m_PipelineStage == PIPELINE_STAGE_JUMP || m_PipelineStage == PIPELINE_STAGE_DELAY_SLOT ? PIPELINE_STAGE_JUMP : PIPELINE_STAGE_NORMAL);
|
||||||
m_Assembler.MoveConstToVariable(&m_Reg.m_PROGRAM_COUNTER, "PROGRAM_COUNTER", m_CompilePC);
|
m_Assembler.MoveConstToVariable(&m_Reg.m_PROGRAM_COUNTER, "PROGRAM_COUNTER", m_CompilePC);
|
||||||
m_Assembler.PushImm32("m_TempValue32", (uint32_t)&m_TempValue32);
|
m_Assembler.PushImm32("m_TempValue32", (uint32_t)&m_TempValue32);
|
||||||
m_Assembler.CallThis((uint32_t)&g_System->m_OpCodes, AddressOf(&R4300iOp::CheckFPUInput32), "R4300iOp::CheckFPUInput32", 4);
|
m_Assembler.CallThis((uint32_t)&g_System->m_OpCodes, AddressOf(&R4300iOp::CheckFPUInput32), "R4300iOp::CheckFPUInput32", 8);
|
||||||
m_Assembler.add(asmjit::x86::esp, 4);
|
|
||||||
m_Assembler.test(asmjit::x86::al, asmjit::x86::al);
|
m_Assembler.test(asmjit::x86::al, asmjit::x86::al);
|
||||||
m_RegWorkingSet.AfterCallDirect();
|
m_RegWorkingSet.AfterCallDirect();
|
||||||
CRegInfo ExitRegSet = m_RegWorkingSet;
|
CRegInfo ExitRegSet = m_RegWorkingSet;
|
||||||
|
@ -8657,8 +8656,7 @@ void CX86RecompilerOps::CompileCheckFPUResult32(int32_t DestReg)
|
||||||
m_Assembler.MoveConstToVariable(&g_System->m_PipelineStage, "System->m_PipelineStage", m_PipelineStage == PIPELINE_STAGE_JUMP || m_PipelineStage == PIPELINE_STAGE_DELAY_SLOT ? PIPELINE_STAGE_JUMP : PIPELINE_STAGE_NORMAL);
|
m_Assembler.MoveConstToVariable(&g_System->m_PipelineStage, "System->m_PipelineStage", m_PipelineStage == PIPELINE_STAGE_JUMP || m_PipelineStage == PIPELINE_STAGE_DELAY_SLOT ? PIPELINE_STAGE_JUMP : PIPELINE_STAGE_NORMAL);
|
||||||
m_Assembler.MoveConstToVariable(&m_Reg.m_PROGRAM_COUNTER, "PROGRAM_COUNTER", m_CompilePC);
|
m_Assembler.MoveConstToVariable(&m_Reg.m_PROGRAM_COUNTER, "PROGRAM_COUNTER", m_CompilePC);
|
||||||
m_Assembler.PushImm32("Result", (uint32_t)&m_TempValue32);
|
m_Assembler.PushImm32("Result", (uint32_t)&m_TempValue32);
|
||||||
m_Assembler.CallThis((uint32_t)&g_System->m_OpCodes, AddressOf(&R4300iOp::CheckFPUResult32), "R4300iOp::CheckFPUResult32", 4);
|
m_Assembler.CallThis((uint32_t)&g_System->m_OpCodes, AddressOf(&R4300iOp::CheckFPUResult32), "R4300iOp::CheckFPUResult32", 8);
|
||||||
m_Assembler.add(asmjit::x86::esp, 4);
|
|
||||||
m_Assembler.test(asmjit::x86::al, asmjit::x86::al);
|
m_Assembler.test(asmjit::x86::al, asmjit::x86::al);
|
||||||
m_RegWorkingSet.AfterCallDirect();
|
m_RegWorkingSet.AfterCallDirect();
|
||||||
CRegInfo ExitRegSet = m_RegWorkingSet;
|
CRegInfo ExitRegSet = m_RegWorkingSet;
|
||||||
|
|
Loading…
Reference in New Issue