From: Toni Wilen Date: Tue, 13 Jun 2017 15:57:19 +0000 (+0300) Subject: JIT FPU fix. X-Git-Tag: 3500~6 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=3deb4d5a4e21b7fa69950462bc3eb1fd09b0b9a2;p=francis%2Fwinuae.git JIT FPU fix. --- diff --git a/fpp.cpp b/fpp.cpp index 8e8c12c1..9b12106b 100644 --- a/fpp.cpp +++ b/fpp.cpp @@ -609,6 +609,20 @@ static void fpsr_get_quotient(uae_u64 *quot, uae_u8 *sign) uae_u32 fpp_get_fpsr (void) { +#ifdef JIT + if (currprefs.compfpu) { + regs.fpsr &= 0x00fffff8; // clear cc + if (fpp_is_nan (®s.fp_result)) { + regs.fpsr |= FPSR_CC_NAN; + } else if (fpp_is_zero(®s.fp_result)) { + regs.fpsr |= FPSR_CC_Z; + } else if (fpp_is_infinity (®s.fp_result)) { + regs.fpsr |= FPSR_CC_I; + } + if (fpp_is_neg(®s.fp_result)) + regs.fpsr |= FPSR_CC_N; + } +#endif return regs.fpsr; } diff --git a/fpp_native.cpp b/fpp_native.cpp index 39f13f7a..c393af0e 100644 --- a/fpp_native.cpp +++ b/fpp_native.cpp @@ -164,7 +164,7 @@ static void native_set_fpucw(uae_u32 m68k_cw) /* Functions for setting host/library modes and getting status */ static void fp_set_mode(uae_u32 mode_control) { - if (mode_control == fpu_mode_control) + if (mode_control == fpu_mode_control && !currprefs.compfpu) return; switch(mode_control & FPCR_ROUNDING_PRECISION) { case FPCR_PRECISION_EXTENDED: // X