diff options
| -rw-r--r-- | emu/Plan9/asm-arm.s | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/emu/Plan9/asm-arm.s b/emu/Plan9/asm-arm.s index 4b9ab724..a6fbc071 100644 --- a/emu/Plan9/asm-arm.s +++ b/emu/Plan9/asm-arm.s @@ -1,3 +1,9 @@ +/* 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 */ + +#define Fpscr 1 + TEXT tramp(SB), 1, $0 MOVW fn+4(FP), R1 /* func to exec */ MOVW arg+8(FP), R2 /* argument */ @@ -16,7 +22,11 @@ RET TEXT FPsave(SB), 1, $0 + VMRS(Fpscr, 1) + MOVW R1, 0(R0) RET TEXT FPrestore(SB), 1, $0 + MOVW (R0), R0 + VMSR(0, Fpscr) RET |
