diff options
author | RSDuck <RSDuck@users.noreply.github.com> | 2020-05-12 16:09:20 +0200 |
---|---|---|
committer | RSDuck <rsduck@users.noreply.github.com> | 2020-06-16 12:06:43 +0200 |
commit | fea9f95bba7475b2cd3b624a3ccd6cdee00a33f1 (patch) | |
tree | cafbb3f08647b7921f18fcf31ade3b7e4cf7a6e2 | |
parent | e7d076403df7afd6dc8304196211b49e3ed7f464 (diff) |
fix inlined IO register access
-rw-r--r-- | src/ARMJIT_x64/ARMJIT_Branch.cpp | 1 | ||||
-rw-r--r-- | 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 27c24c7..bda9e52 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 b27efdd..cf0bd23 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); |