summaryrefslogtreecommitdiff
path: root/sys/src/ape/lib/9
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2019-05-03 21:06:46 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2019-05-03 21:06:46 +0200
commit2994fccbe1b881c3fa2838926d22af8aeda89640 (patch)
tree5fb20d75de24c162c1116fa2f3b4ff98cbdbd3dd /sys/src/ape/lib/9
parentdfd915892a662216fa1f422ea56b89c8b34e3175 (diff)
ape: initial support for arm64
Diffstat (limited to 'sys/src/ape/lib/9')
-rw-r--r--sys/src/ape/lib/9/arm64/getcallerpc.s3
-rw-r--r--sys/src/ape/lib/9/arm64/getfcr.s21
2 files changed, 24 insertions, 0 deletions
diff --git a/sys/src/ape/lib/9/arm64/getcallerpc.s b/sys/src/ape/lib/9/arm64/getcallerpc.s
new file mode 100644
index 000000000..7ca9a3e8c
--- /dev/null
+++ b/sys/src/ape/lib/9/arm64/getcallerpc.s
@@ -0,0 +1,3 @@
+TEXT getcallerpc(SB), $0
+ MOV 0(SP), R0
+ RETURN
diff --git a/sys/src/ape/lib/9/arm64/getfcr.s b/sys/src/ape/lib/9/arm64/getfcr.s
new file mode 100644
index 000000000..402c730a1
--- /dev/null
+++ b/sys/src/ape/lib/9/arm64/getfcr.s
@@ -0,0 +1,21 @@
+#define SYSARG5(op0,op1,Cn,Cm,op2) ((op0)<<19|(op1)<<16|(Cn)<<12|(Cm)<<8|(op2)<<5)
+
+#define FPCR SPR(SYSARG5(3,3,4,4,0))
+#define FPSR SPR(SYSARG5(3,3,4,4,1))
+
+TEXT setfcr(SB), $0
+ MSR R0, FPCR
+ RETURN
+
+TEXT getfcr(SB), $0
+ MRS FPCR, R0
+ RETURN
+
+TEXT getfsr(SB), $0
+ MRS FPSR, R0
+ RETURN
+
+TEXT setfsr(SB), $0
+ MSR R0, FPSR
+ RETURN
+