diff --git a/sys/src/ape/lib/9/arm/getfcr.s b/sys/src/ape/lib/9/arm/getfcr.s index b27c7f082..4822a5f5b 100644 --- a/sys/src/ape/lib/9/arm/getfcr.s +++ b/sys/src/ape/lib/9/arm/getfcr.s @@ -1,16 +1,21 @@ +/* for VFP */ +#define VMRS(fp, cpu) WORD $(0xeef00a10 | (fp)<<16 | (cpu)<<12) /* FP → arm */ +#define VMSR(cpu, fp) WORD $(0xeee00a10 | (fp)<<16 | (cpu)<<12) /* arm → FP */ -TEXT setfcr(SB), $4 - MOVW R0, FPCR +#define Fpscr 1 + +TEXT setfcr(SB), $0 + VMSR(0, Fpscr) RET -TEXT getfcr(SB), $4 - MOVW FPCR, R0 +TEXT getfcr(SB), $0 + VMRS(Fpscr, 0) RET TEXT getfsr(SB), $0 - MOVW FPSR, R0 + VMSR(0, Fpscr) RET TEXT setfsr(SB), $0 - MOVW R0, FPSR + VMRS(Fpscr, 0) RET