summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2013-08-29 21:57:53 -0400
committerLioncash <mathew1800@gmail.com>2013-08-29 21:57:53 -0400
commit0df64775ea50e58aabdd4ee4dec1f0b944036a3d (patch)
treef3f6dcfb7629adb3ccca0d3fd7073e58f97950b3 /Source
parent90918cdb84206f4d9864c49853d0cd7687f3f865 (diff)
parent10c18e75dec85fe6e53e188dcdda263798d99ba1 (diff)
Merge branch 'master' of https://code.google.com/p/dolphin-emu into android-savestate-support
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp
index f764717a15..14a9786cc2 100644
--- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp
+++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_LoadStoreFloating.cpp
@@ -37,7 +37,6 @@ 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));
@@ -53,13 +52,16 @@ void JitArm::lfs(UGeckoInstruction inst)
else
MOVI2R(rB, (u32)inst.SIMM_16);
- ARMReg v0 = fpr.R0(inst.FD);
- ARMReg v1 = fpr.R1(inst.FD);
-
+ fpr.Flush();
+
MOVI2R(rA, (u32)&Memory::Read_F32);
PUSH(4, R0, R1, R2, R3);
MOV(R0, rB);
BL(rA);
+
+ ARMReg v0 = fpr.R0(inst.FD);
+ ARMReg v1 = fpr.R1(inst.FD);
+
VCVT(v0, S0, 0);
VCVT(v1, S0, 0);
POP(4, R0, R1, R2, R3);
@@ -72,7 +74,6 @@ void JitArm::lfd(UGeckoInstruction inst)
{
INSTRUCTION_START
JITDISABLE(LoadStoreFloating)
- Default(inst); return;
ARMReg rA = gpr.GetReg();
ARMReg rB = gpr.GetReg();
@@ -89,12 +90,15 @@ void JitArm::lfd(UGeckoInstruction inst)
else
MOVI2R(rB, (u32)inst.SIMM_16);
- ARMReg v0 = fpr.R0(inst.FD);
+ fpr.Flush();
MOVI2R(rA, (u32)&Memory::Read_F64);
PUSH(4, R0, R1, R2, R3);
MOV(R0, rB);
BL(rA);
+
+ ARMReg v0 = fpr.R0(inst.FD);
+
VMOV(v0, D0);
POP(4, R0, R1, R2, R3);