summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorTillmann Karras <tilkax@gmail.com>2015-01-14 23:36:24 +0100
committerTillmann Karras <tilkax@gmail.com>2015-01-14 23:36:24 +0100
commit904a1c5558a4830d094e23e6f3dbf20f3dfc2f26 (patch)
treec238ceb0701d8359b8bbd1d4f6925db66995b1a7 /Source/Core
parentabb083169baa95102e1949c8057ab5d62e1b6013 (diff)
Jit64: fix psq_l/st regression
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp
index f84f27f7dc..275c0b70fc 100644
--- a/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp
+++ b/Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp
@@ -40,7 +40,8 @@ void Jit64::psq_stXX(UGeckoInstruction inst)
X64Reg addr = gpr.RX(a);
// TODO: this is kind of ugly :/ we should probably create a universal load/store address calculation
// function that handles all these weird cases, e.g. how non-fastmem loadstores clobber addresses.
- if ((update && js.memcheck) || !SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem)
+ bool storeAddress = (update && js.memcheck) || !SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem;
+ if (storeAddress)
{
addr = RSCRATCH2;
MOV(32, R(addr), gpr.R(a));
@@ -88,11 +89,11 @@ void Jit64::psq_stXX(UGeckoInstruction inst)
}
BitSet32 registersInUse = CallerSavedRegistersInUse();
- if (update && js.memcheck)
+ if (update && storeAddress)
registersInUse[addr] = true;
SafeWriteRegToReg(RSCRATCH, addr, w ? 32 : 64, storeOffset, registersInUse);
MemoryExceptionCheck();
- if (update && js.memcheck)
+ if (update && storeAddress)
MOV(32, gpr.R(a), R(addr));
gpr.UnlockAll();
fpr.UnlockAll();