diff --git a/uninit.c b/uninit.c index f15fe39..d9be333 100644 --- a/uninit.c +++ b/uninit.c @@ -178,63 +178,18 @@ ieee0(Void) } #endif /* MSpc */ -#ifdef __mips /* must link with -lfpe */ -#define IEEE0_done -/* code from Eric Grosse */ -#include -#include -#include "/usr/include/sigfpe.h" /* full pathname for lcc -N */ -#include "/usr/include/sys/fpu.h" - - static void -#ifdef KR_headers -ieeeuserhand(exception, val) unsigned exception[5]; int val[2]; -#else -ieeeuserhand(unsigned exception[5], int val[2]) -#endif -{ - fflush(stdout); - fprintf(stderr,"ieee0() aborting because of "); - if(exception[0]==_OVERFL) fprintf(stderr,"overflow\n"); - else if(exception[0]==_UNDERFL) fprintf(stderr,"underflow\n"); - else if(exception[0]==_DIVZERO) fprintf(stderr,"divide by 0\n"); - else if(exception[0]==_INVALID) fprintf(stderr,"invalid operation\n"); - else fprintf(stderr,"\tunknown reason\n"); - fflush(stderr); - abort(); -} - - static void -#ifdef KR_headers -ieeeuserhand2(j) unsigned int **j; -#else -ieeeuserhand2(unsigned int **j) -#endif -{ - fprintf(stderr,"ieee0() aborting because of confusion\n"); - abort(); -} - - static void -ieee0(Void) -{ - int i; - for(i=1; i<=4; i++){ - sigfpe_[i].count = 1000; - sigfpe_[i].trace = 1; - sigfpe_[i].repls = _USER_DETERMINED; - } - sigfpe_[1].repls = _ZERO; /* underflow */ - handle_sigfpes( _ON, - _EN_UNDERFL|_EN_OVERFL|_EN_DIVZERO|_EN_INVALID, - ieeeuserhand,_ABORT_ON_ERROR,ieeeuserhand2); - } -#endif /* mips */ - #ifdef __linux__ #define IEEE0_done #include "fpu_control.h" +#ifdef __mips /* must link with -lfpe */ +#define _FPU_MASK_VM _FPU_MASK_V +#define _FPU_MASK_ZM _FPU_MASK_Z +#define _FPU_MASK_OM _FPU_MASK_O +#define _FPU_MASK_UM _FPU_MASK_U +#define _FPU_MASK_IM _FPU_MASK_I +#endif /* mips */ + #ifdef __alpha__ #ifndef USE_setfpucw #define __setfpucw(x) __fpu_control = (x)