summaryrefslogtreecommitdiff
path: root/sys/src/ape/lib/9/amd64
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2014-02-01 10:31:41 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2014-02-01 10:31:41 +0100
commited9e9f98e9cc502c72b27c68612e9e187ec11e10 (patch)
tree42901d0156503dadce4bf1f0b60e9ef850c3c5e0 /sys/src/ape/lib/9/amd64
parentd4fb753c9c90e0ca745a1b3708ad3ec4ca523e71 (diff)
libc and ape support for amd64
Diffstat (limited to 'sys/src/ape/lib/9/amd64')
-rw-r--r--sys/src/ape/lib/9/amd64/getcallerpc.s3
-rw-r--r--sys/src/ape/lib/9/amd64/getfcr.s38
2 files changed, 41 insertions, 0 deletions
diff --git a/sys/src/ape/lib/9/amd64/getcallerpc.s b/sys/src/ape/lib/9/amd64/getcallerpc.s
new file mode 100644
index 000000000..15e55ea17
--- /dev/null
+++ b/sys/src/ape/lib/9/amd64/getcallerpc.s
@@ -0,0 +1,3 @@
+TEXT getcallerpc(SB), 1, $0
+ MOVQ -8(RARG), AX
+ RET
diff --git a/sys/src/ape/lib/9/amd64/getfcr.s b/sys/src/ape/lib/9/amd64/getfcr.s
new file mode 100644
index 000000000..9fc2002da
--- /dev/null
+++ b/sys/src/ape/lib/9/amd64/getfcr.s
@@ -0,0 +1,38 @@
+
+TEXT setfcr(SB), $4
+ XORL $(0x3F<<7),RARG /* bits are cleared in csr to enable them */
+ ANDL $0xFFC0, RARG /* just the fcr bits */
+ WAIT /* is this needed? */
+ STMXCSR 0(SP)
+ MOVL 0(SP), AX
+ ANDL $~0x3F, AX
+ ORL RARG, AX
+ MOVL AX, 0(SP)
+ LDMXCSR 0(SP)
+ RET
+
+TEXT getfcr(SB), $4
+ WAIT
+ STMXCSR 0(SP)
+ MOVWLZX 0(SP), AX
+ ANDL $0xFFC0, AX
+ XORL $(0x3F<<7),AX
+ RET
+
+TEXT getfsr(SB), $4
+ WAIT
+ STMXCSR 0(SP)
+ MOVL 0(SP), AX
+ ANDL $0x3F, AX
+ RET
+
+TEXT setfsr(SB), $4
+ ANDL $0x3F, RARG
+ WAIT
+ STMXCSR 0(SP)
+ MOVL 0(SP), AX
+ ANDL $~0x3F, AX
+ ORL RARG, AX
+ MOVL AX, 0(SP)
+ LDMXCSR 0(SP)
+ RET