From d16cdfb235e9bf4ba0ee5ec311090c309a50d92e Mon Sep 17 00:00:00 2001 From: Valery Ushakov Date: Fri, 13 Jan 2017 05:02:25 +0300 Subject: Copied from Linux version. Fix lwz mnemonic and use macros. --- lib9/setfcr-NetBSD-power.S | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 lib9/setfcr-NetBSD-power.S (limited to 'lib9') diff --git a/lib9/setfcr-NetBSD-power.S b/lib9/setfcr-NetBSD-power.S new file mode 100644 index 00000000..f50507f5 --- /dev/null +++ b/lib9/setfcr-NetBSD-power.S @@ -0,0 +1,33 @@ +#include + +ENTRY_NOPROFILE(getfcr) + mffs %f0 + stfdu %f0,-16(%r1) + lwz %r3,-12(%r1) + blr + END(getfcr) + +ENTRY_NOPROFILE(getfsr) + mffs %f0 + stfdu %f0,-16(%r1) + lwz %r3,-12(%r1) + blr + END(getfsr) + +ENTRY_NOPROFILE(setfsr) + sync + stw %r3,-12(%r1) + lfd %f0,-16(%r1) + mtfsf 0xff, %f0 + isync + blr + END(setfsr) + +ENTRY_NOPROFILE(setfcr) + sync + stw %r3,-12(%r1) + lfd %f0,-16(%r1) + mtfsf 0xff, %f0 + isync + blr + END(setfcr) -- cgit v1.2.3 From f5ae074fb65122af150efb683484e834e25d7d56 Mon Sep 17 00:00:00 2001 From: Valery Ushakov Date: Fri, 13 Jan 2017 05:04:14 +0300 Subject: Provide asm version of getcallerpc(). --- lib9/getcallerpc-NetBSD-power.S | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 lib9/getcallerpc-NetBSD-power.S (limited to 'lib9') diff --git a/lib9/getcallerpc-NetBSD-power.S b/lib9/getcallerpc-NetBSD-power.S new file mode 100644 index 00000000..cacbbc11 --- /dev/null +++ b/lib9/getcallerpc-NetBSD-power.S @@ -0,0 +1,6 @@ +#include + +ENTRY_NOPROFILE(getcallerpc) + mflr %r3 + blr + END(getcallerpc) -- cgit v1.2.3 From df19338b894073491796ce754c6d6e3d8db238e2 Mon Sep 17 00:00:00 2001 From: Valery Ushakov Date: Fri, 13 Jan 2017 14:30:00 +0300 Subject: Don't use with-update variant to store FPSCR as the code never reverts the update and hence the stack pointer becomes out of whack. --- lib9/setfcr-NetBSD-power.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib9') diff --git a/lib9/setfcr-NetBSD-power.S b/lib9/setfcr-NetBSD-power.S index f50507f5..820fb29f 100644 --- a/lib9/setfcr-NetBSD-power.S +++ b/lib9/setfcr-NetBSD-power.S @@ -2,14 +2,14 @@ ENTRY_NOPROFILE(getfcr) mffs %f0 - stfdu %f0,-16(%r1) + stfd %f0,-16(%r1) lwz %r3,-12(%r1) blr END(getfcr) ENTRY_NOPROFILE(getfsr) mffs %f0 - stfdu %f0,-16(%r1) + stfd %f0,-16(%r1) lwz %r3,-12(%r1) blr END(getfsr) -- cgit v1.2.3 From e1ab54d599d4497ed2c91871b913073e694fbbf5 Mon Sep 17 00:00:00 2001 From: Valery Ushakov Date: Fri, 13 Jan 2017 20:44:57 +0300 Subject: Use macros. --- lib9/getcallerpc-NetBSD-386.S | 7 +++---- lib9/setfcr-NetBSD-386.S | 15 +++++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) (limited to 'lib9') diff --git a/lib9/getcallerpc-NetBSD-386.S b/lib9/getcallerpc-NetBSD-386.S index 09148627..08ea057e 100644 --- a/lib9/getcallerpc-NetBSD-386.S +++ b/lib9/getcallerpc-NetBSD-386.S @@ -1,8 +1,7 @@ - .file "getcallerpc-NetBSD-386.S" +#include - .type getcallerpc,@function - .global getcallerpc -getcallerpc: +NENTRY(getcallerpc) movl 4(%esp), %eax movl -4(%eax), %eax ret + END(getcallerpc) diff --git a/lib9/setfcr-NetBSD-386.S b/lib9/setfcr-NetBSD-386.S index d981f36a..06a6b78d 100644 --- a/lib9/setfcr-NetBSD-386.S +++ b/lib9/setfcr-NetBSD-386.S @@ -1,18 +1,18 @@ +#include -#define FN(x) .type x,@function; .global x; x #define ENT subl $16, %esp #define RET addl $16, %esp; ret - .file "setfcr-Linux-386.S" -FN(setfcr): +NENTRY(setfcr) ENT xorb $0x3f, %al movl %eax, (%esp) fwait fldcw (%esp) RET + END(setfcr) -FN(getfcr): +NENTRY(getfcr) ENT fwait fstcw (%esp) @@ -20,15 +20,18 @@ FN(getfcr): andl $0xffff, %eax xorb $0x3f, %al RET + END(getfcr) -FN(getfsr): +NENTRY(getfsr) ENT fwait fstsw (%esp) movw (%esp), %ax andl $0xffff, %eax RET + END(getfsr) -FN(setfsr): +NENTRY(setfsr) fclex ret + END(setfsr) -- cgit v1.2.3