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