1*b0e062b3SCharles Forsyth /* 2*b0e062b3SCharles Forsyth * MacOSX/Darwin ppc fpu support 3*b0e062b3SCharles Forsyth * Mimic Plan9 floating point support 4*b0e062b3SCharles Forsyth */ 5*b0e062b3SCharles Forsyth 6*b0e062b3SCharles Forsyth #include "lib9.h" 7*b0e062b3SCharles Forsyth #include <architecture/ppc/fp_regs.h> 8*b0e062b3SCharles Forsyth 9*b0e062b3SCharles Forsyth ulong getfcr(void)10*b0e062b3SCharles Forsythgetfcr(void) 11*b0e062b3SCharles Forsyth { 12*b0e062b3SCharles Forsyth ppc_fp_scr_t fpscr = get_fp_scr(); 13*b0e062b3SCharles Forsyth return ((ulong*)&fpscr)[1]; 14*b0e062b3SCharles Forsyth } 15*b0e062b3SCharles Forsyth 16*b0e062b3SCharles Forsyth ulong getfsr(void)17*b0e062b3SCharles Forsythgetfsr(void) 18*b0e062b3SCharles Forsyth { 19*b0e062b3SCharles Forsyth ppc_fp_scr_t fpscr = get_fp_scr(); 20*b0e062b3SCharles Forsyth return ((ulong*)&fpscr)[1]; 21*b0e062b3SCharles Forsyth } 22*b0e062b3SCharles Forsyth 23*b0e062b3SCharles Forsyth void setfsr(ulong fsr)24*b0e062b3SCharles Forsythsetfsr(ulong fsr) 25*b0e062b3SCharles Forsyth { 26*b0e062b3SCharles Forsyth ppc_fp_scr_t fpscr = get_fp_scr(); 27*b0e062b3SCharles Forsyth (((ulong*)&fpscr)[1]) = fsr; 28*b0e062b3SCharles Forsyth set_fp_scr(fpscr); 29*b0e062b3SCharles Forsyth } 30*b0e062b3SCharles Forsyth 31*b0e062b3SCharles Forsyth void setfcr(ulong fcr)32*b0e062b3SCharles Forsythsetfcr(ulong fcr) 33*b0e062b3SCharles Forsyth { 34*b0e062b3SCharles Forsyth ppc_fp_scr_t fpscr = get_fp_scr(); 35*b0e062b3SCharles Forsyth (((ulong*)&fpscr)[1]) = fcr; 36*b0e062b3SCharles Forsyth set_fp_scr(fpscr); 37*b0e062b3SCharles Forsyth } 38