diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit_Util.cpp b/Source/Core/Core/PowerPC/JitArm64/Jit_Util.cpp index 4799e35c13..1a76814162 100644 --- a/Source/Core/Core/PowerPC/JitArm64/Jit_Util.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/Jit_Util.cpp @@ -78,9 +78,11 @@ private: m_emit->ABI_PushRegisters(m_gprs_in_use); float_emit.ABI_PushRegisters(m_fprs_in_use, ARM64Reg::X1); + m_emit->MOVI2R(ARM64Reg::W1, m_address); m_emit->MOV(ARM64Reg::W2, m_src_reg); m_emit->BLR(m_emit->ABI_SetupLambda(lambda)); + float_emit.ABI_PopRegisters(m_fprs_in_use, ARM64Reg::X1); m_emit->ABI_PopRegisters(m_gprs_in_use); } @@ -173,15 +175,16 @@ private: m_emit->ABI_PushRegisters(m_gprs_in_use); float_emit.ABI_PushRegisters(m_fprs_in_use, ARM64Reg::X1); + m_emit->MOVI2R(ARM64Reg::W1, m_address); m_emit->BLR(m_emit->ABI_SetupLambda(lambda)); - float_emit.ABI_PopRegisters(m_fprs_in_use, ARM64Reg::X1); - m_emit->ABI_PopRegisters(m_gprs_in_use); - if (m_sign_extend) m_emit->SBFM(m_dst_reg, ARM64Reg::W0, 0, sbits - 1); else m_emit->UBFM(m_dst_reg, ARM64Reg::W0, 0, sbits - 1); + + float_emit.ABI_PopRegisters(m_fprs_in_use, ARM64Reg::X1); + m_emit->ABI_PopRegisters(m_gprs_in_use); } ARM64XEmitter* m_emit;