From 2d90bfbd20de3871af7f7ce2629f4d9f41469964 Mon Sep 17 00:00:00 2001 From: zilmar Date: Sun, 7 Aug 2016 16:43:26 +1000 Subject: [PATCH] [Project64] fix FixRoundModel for non win32 system --- .../N64System/Recompiler/x86/x86RegInfo.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Source/Project64-core/N64System/Recompiler/x86/x86RegInfo.cpp b/Source/Project64-core/N64System/Recompiler/x86/x86RegInfo.cpp index 6708ef044..054b0b9ff 100644 --- a/Source/Project64-core/N64System/Recompiler/x86/x86RegInfo.cpp +++ b/Source/Project64-core/N64System/Recompiler/x86/x86RegInfo.cpp @@ -155,6 +155,7 @@ void CX86RegInfo::FixRoundModel(FPU_ROUND RoundMethod) if (RoundMethod == RoundDefault) { +#ifdef _WIN32 static const unsigned int msRound[4] = { 0x00000000, //_RC_NEAR @@ -169,6 +170,11 @@ void CX86RegInfo::FixRoundModel(FPU_ROUND RoundMethod) ShiftLeftSignImmed(RoundReg, 2); OrX86RegToX86Reg(reg, RoundReg); +#else + x86Reg RoundReg = Map_TempReg(x86_Any, -1, false); + MoveVariableToX86reg(_RoundingModel, "_RoundingModel", RoundReg); + OrX86RegToX86Reg(reg, RoundReg); +#endif SetX86Protected(RoundReg, false); } else @@ -176,7 +182,7 @@ void CX86RegInfo::FixRoundModel(FPU_ROUND RoundMethod) switch (RoundMethod) { case RoundTruncate: OrConstToX86Reg(0x0C00, reg); break; - case RoundNearest: /*OrConstToX86Reg(0x0000, reg);*/ break; + case RoundNearest: OrConstToX86Reg(0x0000, reg); break; case RoundDown: OrConstToX86Reg(0x0400, reg); break; case RoundUp: OrConstToX86Reg(0x0800, reg); break; default: