diff -up mp-35060ba2a59f2b0f0fd622ed9df678f142f846ed/src/asl/solvers/fpinit.c.orig mp-35060ba2a59f2b0f0fd622ed9df678f142f846ed/src/asl/solvers/fpinit.c --- mp-35060ba2a59f2b0f0fd622ed9df678f142f846ed/src/asl/solvers/fpinit.c.orig 2015-01-28 09:21:01.817927788 -0200 +++ mp-35060ba2a59f2b0f0fd622ed9df678f142f846ed/src/asl/solvers/fpinit.c 2015-01-28 09:24:21.273691331 -0200 @@ -125,14 +125,18 @@ fpinit_ASL(Void) _FPU_GETCW(__fpu_control); __fpu_control &= ~_FPU_EXTENDED; /* clear rounding precision bits */ __fpu_control |= _FPU_DOUBLE; /* set the ones we want set */ + _FPU_SETCW(__fpu_control); #else -#ifdef _FPU_IEEE +#if defined(_FPU_IEEE) && defined(_FPU_EXTENDED) && defined(_FPU_DOUBLE) __fpu_control = _FPU_IEEE - _FPU_EXTENDED + _FPU_DOUBLE; -#else + _FPU_SETCW(__fpu_control); +#elif defined(__i386__) || defined(__x86_64__) __fpu_control = 0x27f; + _FPU_SETCW(__fpu_control); +#elif defined(FE_ALL_EXCEPT) + fedisableexcept(FE_ALL_EXCEPT); #endif #endif /* ASL_FPINIT_KEEP_TRAPBITS */ - _FPU_SETCW(__fpu_control); #endif } #endif /*} NO_fpu_control */