diff --git a/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStoreFloating.cpp b/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStoreFloating.cpp index 46e888f935..41c9a3ceb7 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStoreFloating.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64/Jit_LoadStoreFloating.cpp @@ -172,6 +172,11 @@ void Jit64::stfd(UGeckoInstruction inst) int s = inst.RS; int a = inst.RA; + if (!a) + { + Default(inst); + return; + } u32 mem_mask = Memory::ADDR_MASK_HW_ACCESS; if (Core::g_CoreStartupParameter.bMMU || @@ -219,14 +224,15 @@ void Jit64::stfd(UGeckoInstruction inst) // Safe but slow routine MOVAPD(XMM0, fpr.R(s)); - MOVD_xmm(R(EAX), XMM0); - SafeWriteRegToReg(EAX, ABI_PARAM1, 32, 4); - PSRLQ(XMM0, 32); MOVD_xmm(R(EAX), XMM0); - LEA(32, ABI_PARAM1, MDisp(gpr.R(a).GetSimpleReg(), offset)); SafeWriteRegToReg(EAX, ABI_PARAM1, 32, 0); + MOVAPD(XMM0, fpr.R(s)); + MOVD_xmm(R(EAX), XMM0); + LEA(32, ABI_PARAM1, MDisp(gpr.R(a).GetSimpleReg(), offset)); + SafeWriteRegToReg(EAX, ABI_PARAM1, 32, 4); + SetJumpTarget(exit); gpr.UnlockAll();