summaryrefslogtreecommitdiff
path: root/sys/src/ape/lib/9/alpha
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
commite5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch)
treed8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/ape/lib/9/alpha
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/ape/lib/9/alpha')
-rwxr-xr-xsys/src/ape/lib/9/alpha/getcallerpc.s4
-rwxr-xr-xsys/src/ape/lib/9/alpha/getfcr.s57
2 files changed, 61 insertions, 0 deletions
diff --git a/sys/src/ape/lib/9/alpha/getcallerpc.s b/sys/src/ape/lib/9/alpha/getcallerpc.s
new file mode 100755
index 000000000..2214561be
--- /dev/null
+++ b/sys/src/ape/lib/9/alpha/getcallerpc.s
@@ -0,0 +1,4 @@
+TEXT getcallerpc(SB), $-8
+ MOVL 0(SP), R0
+ RET
+
diff --git a/sys/src/ape/lib/9/alpha/getfcr.s b/sys/src/ape/lib/9/alpha/getfcr.s
new file mode 100755
index 000000000..06df5de98
--- /dev/null
+++ b/sys/src/ape/lib/9/alpha/getfcr.s
@@ -0,0 +1,57 @@
+#define EXCB WORD $0x60000400 /* until 7a/7l catch up */
+
+TEXT getfsr(SB), $8
+ EXCB
+ MOVT FPCR, F0
+ EXCB
+ MOVT F0, tmp-8(SP)
+ MOVL tmp-4(SP), R1
+ MOVQ $0x01e00000, R2
+ AND R2, R1, R0
+ RET
+
+TEXT setfsr(SB), $8
+ MOVQ $0x01e00000, R2
+ EXCB
+ MOVT FPCR, F0
+ EXCB
+ MOVT F0, tmp-8(SP)
+ MOVL tmp-4(SP), R1
+ ANDNOT R2, R1, R3
+ AND R2, R0, R4
+ OR R3, R4, R5
+ MOVL R5, tmp-4(SP)
+ MOVT tmp-8(SP), F0
+ EXCB
+ MOVT F0, FPCR
+ EXCB
+ RET
+
+TEXT getfcr(SB), $8
+ EXCB
+ MOVT FPCR, F0
+ EXCB
+ MOVT F0, tmp-8(SP)
+ MOVL tmp-4(SP), R1
+ MOVQ $0x700c0000, R2
+ AND R2, R1, R0
+ XOR R2, R0
+ RET
+
+TEXT setfcr(SB), $8
+ MOVQ $0x700c0000, R2
+ XOR R2, R0
+ EXCB
+ MOVT FPCR, F0
+ EXCB
+ MOVT F0, tmp-8(SP)
+ MOVL tmp-4(SP), R1
+ ANDNOT R2, R1, R3
+ AND R2, R0, R4
+ OR R3, R4, R5
+ MOVL R5, tmp-4(SP)
+ MOVT tmp-8(SP), F0
+ EXCB
+ MOVT F0, FPCR
+ EXCB
+ RET