xref: /inferno-os/lib9/setfcr-MacOSX-power.c (revision b0e062b3c230c48d95c965017d6c9f23c1bba567)
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 Forsyth getfcr(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 Forsyth getfsr(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 Forsyth setfsr(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 Forsyth setfcr(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