Redline/source/fpu_exc.c

33 lines
526 B
C
Raw Normal View History

#ifdef __ppc__
#include <architecture/ppc/fp_regs.h>
#include <fenv.h>
#ifndef SIG_HOLD
#define SIG_HOLD (void (*)(int))5
#endif
void EnableFPUExceptions()
{
long resp;
if(Gestalt(gestaltSystemVersion,&resp)!=noErr)
return;
if(resp<0x00001040)
return;
ppc_fp_scr_t fpscr=get_fp_scr();
fpscr.ze=1;
fpscr.ni=1;
/* fpscr.oe=1;
fpscr.ue=1;
fpscr.ve=1;*/
set_fp_scr(fpscr);
feclearexcept(FE_ALL_EXCEPT);
signal(SIGFPE,SIG_HOLD);
printf("FPU Exceptions enabled.\n");
}
#else
void EnableFPUExceptions()
{
}
#endif