aboutsummaryrefslogtreecommitdiff
path: root/src/ARMJIT_x64
diff options
context:
space:
mode:
authorRSDuck <RSDuck@users.noreply.github.com>2020-05-12 16:09:20 +0200
committerRSDuck <rsduck@users.noreply.github.com>2020-06-16 12:06:43 +0200
commitfea9f95bba7475b2cd3b624a3ccd6cdee00a33f1 (patch)
treecafbb3f08647b7921f18fcf31ade3b7e4cf7a6e2 /src/ARMJIT_x64
parente7d076403df7afd6dc8304196211b49e3ed7f464 (diff)
fix inlined IO register access
Diffstat (limited to 'src/ARMJIT_x64')
-rw-r--r--src/ARMJIT_x64/ARMJIT_Branch.cpp1
-rw-r--r--src/ARMJIT_x64/ARMJIT_LoadStore.cpp6
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);