ref: d1ee3f91d97971e4008bb79d6f348ee1d3cd7605
parent: f54d6a87c93ad53e47f54bb6adb94dc3ce23457e
author: Ori Bernstein <ori@eigenstate.org>
date: Mon Feb 8 11:07:09 EST 2021
ape/lib9: sync arm getfcr.s implementation The arm assembler supports movw to handle getfcr and setfcr now, no need to hack it with macros; sync from plan9 libc.
--- 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
--
⑨