Jit64: Use utility function for function calls in dcbx.
We have these for a reason. I think this also fixes a theoretical problem when `ABI_PARAM1 == loop_counter` where the first MOV destroys the second's value; I'm not sure if this can actually happen in practice though.
This commit is contained in:
parent
1bf593f65a
commit
e24e52af3c
|
@ -361,16 +361,13 @@ void Jit64::dcbx(UGeckoInstruction inst)
|
|||
ABI_PushRegistersAndAdjustStack(registersInUse, 0);
|
||||
if (make_loop)
|
||||
{
|
||||
MOV(32, R(ABI_PARAM2), R(effective_address));
|
||||
MOV(32, R(ABI_PARAM3), R(loop_counter));
|
||||
MOV(64, R(ABI_PARAM1), Imm64(reinterpret_cast<u64>(&m_system.GetJitInterface())));
|
||||
ABI_CallFunction(JitInterface::InvalidateICacheLinesFromJIT);
|
||||
ABI_CallFunctionPRR(JitInterface::InvalidateICacheLinesFromJIT, &m_system.GetJitInterface(),
|
||||
effective_address, loop_counter);
|
||||
}
|
||||
else
|
||||
{
|
||||
MOV(32, R(ABI_PARAM2), R(effective_address));
|
||||
MOV(64, R(ABI_PARAM1), Imm64(reinterpret_cast<u64>(&m_system.GetJitInterface())));
|
||||
ABI_CallFunction(JitInterface::InvalidateICacheLineFromJIT);
|
||||
ABI_CallFunctionPR(JitInterface::InvalidateICacheLineFromJIT, &m_system.GetJitInterface(),
|
||||
effective_address);
|
||||
}
|
||||
ABI_PopRegistersAndAdjustStack(registersInUse, 0);
|
||||
asm_routines.ResetStack(*this);
|
||||
|
|
Loading…
Reference in New Issue