#include #include #include #define fesetenv_register(env) \ ({ double d = (env); asm volatile ("mtfsf 0xff,%0" : : "f" (d)); }) typedef union { double fenv; unsigned long fpscr[2]; } my_fenv_union_t; void sigfpeHandler(int x) { // Do nothing. // The exception will be retrown forever... // until it affects another process ;-( } int main () { // Register to SIGFPE signal(SIGFPE, sigfpeHandler); // Force the generation of a SIGFPE my_fenv_union_t fenvt; fenvt.fpscr[1] = 0xffffffff; fesetenv_register(fenvt.fenv); return 0; }