diff --git a/Core/MIPS/ARM/ArmCompVFPU.cpp b/Core/MIPS/ARM/ArmCompVFPU.cpp index 089ace124c..5b5c6baba3 100644 --- a/Core/MIPS/ARM/ArmCompVFPU.cpp +++ b/Core/MIPS/ARM/ArmCompVFPU.cpp @@ -100,7 +100,7 @@ namespace MIPSComp js.prefixTFlag = JitState::PREFIX_KNOWN_DIRTY; break; case 2: // D - js.prefixD = data; + js.prefixD = data & 0x00000FFF; js.prefixDFlag = JitState::PREFIX_KNOWN_DIRTY; break; default: diff --git a/Core/MIPS/ARM64/Arm64CompVFPU.cpp b/Core/MIPS/ARM64/Arm64CompVFPU.cpp index 871c7e99ea..68428e69d2 100644 --- a/Core/MIPS/ARM64/Arm64CompVFPU.cpp +++ b/Core/MIPS/ARM64/Arm64CompVFPU.cpp @@ -93,7 +93,7 @@ namespace MIPSComp { js.prefixTFlag = JitState::PREFIX_KNOWN_DIRTY; break; case 2: // D - js.prefixD = data; + js.prefixD = data & 0x00000FFF; js.prefixDFlag = JitState::PREFIX_KNOWN_DIRTY; break; default: diff --git a/Core/MIPS/IR/IRCompVFPU.cpp b/Core/MIPS/IR/IRCompVFPU.cpp index 8261a3a3ac..a0c9aecd9c 100644 --- a/Core/MIPS/IR/IRCompVFPU.cpp +++ b/Core/MIPS/IR/IRCompVFPU.cpp @@ -129,6 +129,7 @@ namespace MIPSComp { void IRFrontend::Comp_VPFX(MIPSOpcode op) { CONDITIONAL_DISABLE(VFPU_XFER); + // This is how prefixes are typically set. int data = op & 0xFFFFF; int regnum = (op >> 24) & 3; switch (regnum) { @@ -141,7 +142,7 @@ namespace MIPSComp { js.prefixTFlag = JitState::PREFIX_KNOWN_DIRTY; break; case 2: // D - js.prefixD = data; + js.prefixD = data & 0x00000FFF; js.prefixDFlag = JitState::PREFIX_KNOWN_DIRTY; break; default: diff --git a/Core/MIPS/MIPSIntVFPU.cpp b/Core/MIPS/MIPSIntVFPU.cpp index 717367d1b2..3d982fb705 100644 --- a/Core/MIPS/MIPSIntVFPU.cpp +++ b/Core/MIPS/MIPSIntVFPU.cpp @@ -183,6 +183,8 @@ namespace MIPSInt { int data = op & 0xFFFFF; int regnum = (op >> 24) & 3; + if (regnum == VFPU_CTRL_DPREFIX) + data &= 0x00000FFF; currentMIPS->vfpuCtrl[VFPU_CTRL_SPREFIX + regnum] = data; PC += 4; } diff --git a/Core/MIPS/x86/CompVFPU.cpp b/Core/MIPS/x86/CompVFPU.cpp index 10a1e6e9bc..8f5d25d294 100644 --- a/Core/MIPS/x86/CompVFPU.cpp +++ b/Core/MIPS/x86/CompVFPU.cpp @@ -87,7 +87,7 @@ void Jit::Comp_VPFX(MIPSOpcode op) js.prefixTFlag = JitState::PREFIX_KNOWN_DIRTY; break; case 2: // D - js.prefixD = data; + js.prefixD = data & 0x00000FFF; js.prefixDFlag = JitState::PREFIX_KNOWN_DIRTY; break; }