From fea9f95bba7475b2cd3b624a3ccd6cdee00a33f1 Mon Sep 17 00:00:00 2001 From: RSDuck Date: Tue, 12 May 2020 16:09:20 +0200 Subject: [PATCH] fix inlined IO register access --- src/ARMJIT_x64/ARMJIT_Branch.cpp | 1 - src/ARMJIT_x64/ARMJIT_LoadStore.cpp | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ARMJIT_x64/ARMJIT_Branch.cpp b/src/ARMJIT_x64/ARMJIT_Branch.cpp index 27c24c7e..bda9e529 100644 --- a/src/ARMJIT_x64/ARMJIT_Branch.cpp +++ b/src/ARMJIT_x64/ARMJIT_Branch.cpp @@ -134,7 +134,6 @@ void Compiler::Comp_JumpTo(Gen::X64Reg addr, bool restoreCPSR) { IrregularCycles = true; - BitSet16 hiRegsLoaded(RegCache.LoadedRegs & 0x7F00); bool cpsrDirty = CPSRDirty; SaveCPSR(); diff --git a/src/ARMJIT_x64/ARMJIT_LoadStore.cpp b/src/ARMJIT_x64/ARMJIT_LoadStore.cpp index b27efdd9..cf0bd238 100644 --- a/src/ARMJIT_x64/ARMJIT_LoadStore.cpp +++ b/src/ARMJIT_x64/ARMJIT_LoadStore.cpp @@ -283,8 +283,6 @@ void Compiler::Comp_MemAccess(int rd, int rn, const ComplexOperand& op2, int siz } else { - PushRegs(false); - u32 maskedDataRegion; if (addrIsStatic) @@ -309,6 +307,8 @@ void Compiler::Comp_MemAccess(int rd, int rn, const ComplexOperand& op2, int siz if (flags & memop_Store) { + PushRegs(false); + MOV(32, R(ABI_PARAM2), rdMapped); ABI_CallFunction((void(*)())func); @@ -320,6 +320,8 @@ void Compiler::Comp_MemAccess(int rd, int rn, const ComplexOperand& op2, int siz if (!addrIsStatic) MOV(32, rdMapped, R(RSCRATCH3)); + PushRegs(false); + ABI_CallFunction((void(*)())func); PopRegs(false);