Interpreter_FPUtils: Properly update the FPSCR's FEX bit in UpdateFPSCR()

FPSCR.FEX is supposed to be a logical OR of all floating-point exception
bits masked by their respective enable bits.

Currently UpdateFPSCR() isn't called by anything in the interpreter
except for mcrfs and mffs, so this doesn't alter existing behavior that much.
However, this will be necessary in future PRs when making the interpreter more
accurate in how it sets flags.
This commit is contained in:
Lioncash 2018-05-06 19:47:32 -04:00
parent c3d88a622d
commit 64d1865448
1 changed files with 2 additions and 1 deletions

View File

@ -46,7 +46,8 @@ inline void SetFI(int FI)
inline void UpdateFPSCR()
{
FPSCR.VX = (FPSCR.Hex & FPSCR_VX_ANY) != 0;
FPSCR.FEX = 0; // we assume that "?E" bits are always 0
FPSCR.FEX = (FPSCR.VX & FPSCR.VE) | (FPSCR.OX & FPSCR.OE) | (FPSCR.UX & FPSCR.UE) |
(FPSCR.ZX & FPSCR.ZE) | (FPSCR.XX & FPSCR.XE);
}
inline double ForceSingle(double value)