summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2013-09-18 17:21:08 -0500
committerRyan Houdek <Sonicadvance1@gmail.com>2013-09-18 17:21:22 -0500
commit452fd84bbdfa37b16dc3da3f022ad397baf6eb5d (patch)
treee3d83edee10f6e28a6f1da35066fb17b07b39970 /Source/Core
parent6fc21175035b91047857fa68f4cc93e2ae9dc276 (diff)
[ANDROID] Fix ARM JIT. Is due to Android using softfp instead of hardfp.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp
index 7b607adeb0..c9f42ebd36 100644
--- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp
+++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp
@@ -307,8 +307,13 @@ void JitArm::stfd(UGeckoInstruction inst)
MOVI2R(rA, (u32)&Memory::Write_F64);
PUSH(4, R0, R1, R2, R3);
+#if !defined(__ARM_PCS_VFP) // SoftFP returns in R0 and R1
+ VMOV(R0, v0);
+ MOV(R2, rB);
+#else
VMOV(D0, v0);
MOV(R0, rB);
+#endif
BL(rA);
@@ -321,7 +326,6 @@ void JitArm::stfdu(UGeckoInstruction inst)
{
INSTRUCTION_START
JITDISABLE(bJITLoadStoreFloatingOff)
-
ARMReg RA = gpr.R(inst.RA);
ARMReg rA = gpr.GetReg();
ARMReg rB = gpr.GetReg();
@@ -339,8 +343,13 @@ void JitArm::stfdu(UGeckoInstruction inst)
MOVI2R(rA, (u32)&Memory::Write_F64);
PUSH(4, R0, R1, R2, R3);
+#if !defined(__ARM_PCS_VFP) // SoftFP returns in R0 and R1
+ VMOV(R0, v0);
+ MOV(R2, rB);
+#else
VMOV(D0, v0);
MOV(R0, rB);
+#endif
BL(rA);