Skip to content
Permalink
Browse files

Jit64: fix mcrfs

It was deleting the wrong bits. This fixes issue 10074 (Super Monkey
Ball 2 minigame). I introduced this regression in
0f2c656.
  • Loading branch information...
Tilka committed Aug 18, 2019
1 parent 7520306 commit ee85ec95b49032afcd07d7225a7e636493477c76
Showing with 2 additions and 2 deletions.
  1. +2 −2 Source/Core/Core/PowerPC/Jit64/Jit_SystemRegisters.cpp
@@ -635,7 +635,7 @@ void Jit64::mcrfs(UGeckoInstruction inst)
u32 mask = 0xF << shift;

// Only clear exception bits (but not FEX/VX).
mask &= 0x9FF87000;
mask &= FPSCR_FX | FPSCR_ANY_X;

MOV(32, R(RSCRATCH), PPCSTATE(fpscr));
if (cpu_info.bBMI1)
@@ -649,7 +649,7 @@ void Jit64::mcrfs(UGeckoInstruction inst)
SHR(32, R(RSCRATCH2), Imm8(shift));
AND(32, R(RSCRATCH2), Imm32(0xF));
}
AND(32, R(RSCRATCH), Imm32(mask));
AND(32, R(RSCRATCH), Imm32(~mask));
MOV(32, PPCSTATE(fpscr), R(RSCRATCH));
LEA(64, RSCRATCH, MConst(PowerPC::ConditionRegister::s_crTable));
MOV(64, R(RSCRATCH), MComplex(RSCRATCH, RSCRATCH2, SCALE_8, 0));

0 comments on commit ee85ec9

Please sign in to comment.
You can’t perform that action at this time.