JitArm64: Also push/pop gpr.R(addr).
This fixes slowmem load instruction with update.
This commit is contained in:
parent
e18ceca7af
commit
abe9c30d3d
|
@ -38,11 +38,6 @@ void JitArm64::SafeLoadToReg(u32 dest, s32 addr, s32 offsetReg, u32 flags, s32 o
|
||||||
if (offsetReg != -1 && !gpr.IsImm(offsetReg))
|
if (offsetReg != -1 && !gpr.IsImm(offsetReg))
|
||||||
off_reg = gpr.R(offsetReg);
|
off_reg = gpr.R(offsetReg);
|
||||||
|
|
||||||
BitSet32 regs_in_use = gpr.GetCallerSavedUsed();
|
|
||||||
BitSet32 fprs_in_use = fpr.GetCallerSavedUsed();
|
|
||||||
regs_in_use[W0] = 0;
|
|
||||||
regs_in_use[dest_reg] = 0;
|
|
||||||
|
|
||||||
ARM64Reg addr_reg = W0;
|
ARM64Reg addr_reg = W0;
|
||||||
u32 imm_addr = 0;
|
u32 imm_addr = 0;
|
||||||
bool is_immediate = false;
|
bool is_immediate = false;
|
||||||
|
@ -116,6 +111,11 @@ void JitArm64::SafeLoadToReg(u32 dest, s32 addr, s32 offsetReg, u32 flags, s32 o
|
||||||
MOV(gpr.R(addr), addr_reg);
|
MOV(gpr.R(addr), addr_reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BitSet32 regs_in_use = gpr.GetCallerSavedUsed();
|
||||||
|
BitSet32 fprs_in_use = fpr.GetCallerSavedUsed();
|
||||||
|
regs_in_use[W0] = 0;
|
||||||
|
regs_in_use[dest_reg] = 0;
|
||||||
|
|
||||||
u32 access_size = BackPatchInfo::GetFlagSize(flags);
|
u32 access_size = BackPatchInfo::GetFlagSize(flags);
|
||||||
u32 mmio_address = 0;
|
u32 mmio_address = 0;
|
||||||
if (is_immediate)
|
if (is_immediate)
|
||||||
|
|
Loading…
Reference in New Issue