diff options
Diffstat (limited to 'lib9')
| -rw-r--r-- | lib9/getcallerpc-NetBSD-386.S | 7 | ||||
| -rw-r--r-- | lib9/getcallerpc-NetBSD-power.S | 6 | ||||
| -rw-r--r-- | lib9/setfcr-NetBSD-386.S | 15 | ||||
| -rw-r--r-- | lib9/setfcr-NetBSD-power.S | 33 |
4 files changed, 51 insertions, 10 deletions
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 <machine/asm.h> - .type getcallerpc,@function - .global getcallerpc -getcallerpc: +NENTRY(getcallerpc) movl 4(%esp), %eax movl -4(%eax), %eax ret + END(getcallerpc) 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 <machine/asm.h> + +ENTRY_NOPROFILE(getcallerpc) + mflr %r3 + blr + 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 <machine/asm.h> -#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) diff --git a/lib9/setfcr-NetBSD-power.S b/lib9/setfcr-NetBSD-power.S new file mode 100644 index 00000000..820fb29f --- /dev/null +++ b/lib9/setfcr-NetBSD-power.S @@ -0,0 +1,33 @@ +#include <machine/asm.h> + +ENTRY_NOPROFILE(getfcr) + mffs %f0 + stfd %f0,-16(%r1) + lwz %r3,-12(%r1) + blr + END(getfcr) + +ENTRY_NOPROFILE(getfsr) + mffs %f0 + stfd %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) |
