xref: /inferno-os/lib9/setfcr-Solaris-sparc.c (revision 7ef44d652ae9e5e1f5b3465d73684e4a54de73c0)
1 /* This code is a little awkward.  If somebody who understands Solaris
2    better would tell me an idiomatic way to invoke equivalent
3    behavior, I'd be grateful.    ehg@bell-labs.com  */
4 
5 #include "lib9.h"
6 
7 ulong
8 getfcr(void)
9 {
10 	ulong v;
11 
12 	asm("	st	%fsr, [%fp-8]");
13 	return v;
14 }
15 
16 void
17 setfcr(ulong v)
18 {
19 	ulong vv;
20 
21 	vv = (getfcr() & ~FPFCR) | (v & FPFCR);
22 	asm("	ld	[%fp-4], %fsr");
23 }
24 
25 ulong
26 getfsr(void)
27 {
28 	ulong v;
29 
30 	asm("	st	%fsr, [%fp-8]");
31 	return v;
32 }
33 
34 void
35 setfsr(ulong v)
36 {
37 	ulong vv;
38 
39 	vv = (getfsr() & ~FPFSR) | (v & FPFSR);
40 	asm("	ld	[%fp-4], %fsr");
41 }
42 
43