Changeset View
Changeset View
Standalone View
Standalone View
source/creator/creator_signals.c
| Show First 20 Lines • Show All 252 Lines • ▼ Show 20 Lines | |||||
| void main_signal_setup_fpe(void) | void main_signal_setup_fpe(void) | ||||
| { | { | ||||
| # if defined(__linux__) || defined(_WIN32) || defined(OSX_SSE_FPE) | # if defined(__linux__) || defined(_WIN32) || defined(OSX_SSE_FPE) | ||||
| /* zealous but makes float issues a heck of a lot easier to find! | /* zealous but makes float issues a heck of a lot easier to find! | ||||
| * set breakpoints on sig_handle_fpe */ | * set breakpoints on sig_handle_fpe */ | ||||
| signal(SIGFPE, sig_handle_fpe); | signal(SIGFPE, sig_handle_fpe); | ||||
| # if defined(__linux__) && defined(__GNUC__) | # if defined(__linux__) && defined(__GNUC__) && defined(HAVE_FEENABLEEXCEPT) | ||||
| feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW); | feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW); | ||||
| # endif /* defined(__linux__) && defined(__GNUC__) */ | # endif /* defined(__linux__) && defined(__GNUC__) */ | ||||
| # if defined(OSX_SSE_FPE) | # if defined(OSX_SSE_FPE) | ||||
| /* OSX uses SSE for floating point by default, so here | /* OSX uses SSE for floating point by default, so here | ||||
| * use SSE instructions to throw floating point exceptions */ | * use SSE instructions to throw floating point exceptions */ | ||||
| _MM_SET_EXCEPTION_MASK(_MM_MASK_MASK & | _MM_SET_EXCEPTION_MASK(_MM_MASK_MASK & | ||||
| ~(_MM_MASK_OVERFLOW | _MM_MASK_INVALID | _MM_MASK_DIV_ZERO)); | ~(_MM_MASK_OVERFLOW | _MM_MASK_INVALID | _MM_MASK_DIV_ZERO)); | ||||
| # endif /* OSX_SSE_FPE */ | # endif /* OSX_SSE_FPE */ | ||||
| Show All 10 Lines | |||||