From 42de733c418658ad2b0d5b1195d6a87d6aff827a Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Mon, 19 Aug 2013 18:06:56 +0000 Subject: [PATCH] [ARM] Disable floating loadstores as they cause problems. Reenable faddsx/fsubsx as it works with loadstores disabled. --- .../PowerPC/JitArm32/JitArm_FloatingPoint.cpp | 19 +++++++------------ .../JitArm32/JitArm_LoadStoreFloating.cpp | 8 +++++--- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FloatingPoint.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FloatingPoint.cpp index 1c3ec5367d..85ab5f3cae 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FloatingPoint.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_FloatingPoint.cpp @@ -51,18 +51,15 @@ void JitArm::fabsx(UGeckoInstruction inst) if (inst.Rc) Helper_UpdateCR1(vD); } -// Broken in Crazy Taxi, sparks constantly fly from the car, messes with camera void JitArm::faddsx(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(FloatingPoint) - - Default(inst); return; - ARMReg vD0 = fpr.R0(inst.FD); - ARMReg vD1 = fpr.R1(inst.FD); ARMReg vA = fpr.R0(inst.FA); ARMReg vB = fpr.R0(inst.FB); + ARMReg vD0 = fpr.R0(inst.FD); + ARMReg vD1 = fpr.R1(inst.FD); VADD(vD0, vA, vB); VMOV(vD1, vD0); @@ -82,14 +79,11 @@ void JitArm::faddx(UGeckoInstruction inst) if (inst.Rc) Helper_UpdateCR1(vD); } -// Breaks Animal crossing void JitArm::fsubsx(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(FloatingPoint) - - Default(inst); return; - + ARMReg vA = fpr.R0(inst.FA); ARMReg vB = fpr.R0(inst.FB); ARMReg vD0 = fpr.R0(inst.FD); @@ -112,14 +106,15 @@ void JitArm::fsubx(UGeckoInstruction inst) VSUB(vD, vA, vB); if (inst.Rc) Helper_UpdateCR1(vD); } -// Breaks animal crossing + +// Breaks Animal Crossing void JitArm::fmulsx(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(FloatingPoint) - + Default(inst); return; - + ARMReg vA = fpr.R0(inst.FA); ARMReg vC = fpr.R0(inst.FC); ARMReg vD0 = fpr.R0(inst.FD); diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp index 25b02e3511..f764717a15 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp @@ -37,6 +37,7 @@ void JitArm::lfs(UGeckoInstruction inst) INSTRUCTION_START JITDISABLE(LoadStoreFloating) + Default(inst); return; ARMReg rA = gpr.GetReg(); ARMReg rB = gpr.GetReg(); LDR(rA, R9, PPCSTATE_OFF(Exceptions)); @@ -52,8 +53,8 @@ void JitArm::lfs(UGeckoInstruction inst) else MOVI2R(rB, (u32)inst.SIMM_16); - ARMReg v0 = fpr.R0(inst.FD, false); - ARMReg v1 = fpr.R1(inst.FD, false); + ARMReg v0 = fpr.R0(inst.FD); + ARMReg v1 = fpr.R1(inst.FD); MOVI2R(rA, (u32)&Memory::Read_F32); PUSH(4, R0, R1, R2, R3); @@ -71,6 +72,7 @@ void JitArm::lfd(UGeckoInstruction inst) { INSTRUCTION_START JITDISABLE(LoadStoreFloating) + Default(inst); return; ARMReg rA = gpr.GetReg(); ARMReg rB = gpr.GetReg(); @@ -87,7 +89,7 @@ void JitArm::lfd(UGeckoInstruction inst) else MOVI2R(rB, (u32)inst.SIMM_16); - ARMReg v0 = fpr.R0(inst.FD, false); + ARMReg v0 = fpr.R0(inst.FD); MOVI2R(rA, (u32)&Memory::Read_F64); PUSH(4, R0, R1, R2, R3);