From e1d510c2dc6707373814e01b3d50ec76ecafdf64 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Thu, 12 Sep 2013 09:40:10 +0000 Subject: [PATCH] [ARM] Disables loadstores with update because they are broken. --- .../Core/Src/PowerPC/JitArm32/JitArm_LoadStore.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStore.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStore.cpp index 8fcbcef894..aa265fcfb8 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStore.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStore.cpp @@ -318,6 +318,7 @@ void JitArm::lXX(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(bJITLoadStoreOff) + u32 a = inst.RA, b = inst.RB, d = inst.RD; s32 offset = inst.SIMM_16; u32 accessSize = 0; @@ -401,9 +402,16 @@ void JitArm::lXX(UGeckoInstruction inst) accessSize = 16; break; } + + if (update) + { + Default(inst); + return; + } // Check for exception before loading ARMReg rA = gpr.GetReg(false); + LDR(rA, R9, PPCSTATE_OFF(Exceptions)); CMP(rA, EXCEPTION_DSI); FixupBranch DoNotLoad = B_CC(CC_EQ); @@ -422,9 +430,10 @@ void JitArm::lXX(UGeckoInstruction inst) } SetJumpTarget(DoNotLoad); - + // LWZ idle skipping if (SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle && + inst.OPCD == 32 && (inst.hex & 0xFFFF0000) == 0x800D0000 && (Memory::ReadUnchecked_U32(js.compilerPC + 4) == 0x28000000 || (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii && Memory::ReadUnchecked_U32(js.compilerPC + 4) == 0x2C000000)) &&