summaryrefslogtreecommitdiff
path: root/lib9/setfcr-NetBSD-386.S
blob: 06a6b78d45f73fcd14b7004ba0b6cecded055ef9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <machine/asm.h>

#define	ENT	subl $16, %esp
#define	RET	addl $16, %esp; ret

NENTRY(setfcr)
	ENT
	xorb	$0x3f, %al
	movl	%eax, (%esp)
	fwait
	fldcw	(%esp)
	RET
	END(setfcr)

NENTRY(getfcr)
	ENT
	fwait
	fstcw	(%esp)
	movw	(%esp), %ax
	andl	$0xffff, %eax
	xorb	$0x3f, %al
	RET
	END(getfcr)

NENTRY(getfsr)
	ENT
	fwait
	fstsw	(%esp)
	movw	(%esp), %ax
	andl	$0xffff, %eax
	RET
	END(getfsr)

NENTRY(setfsr)
	fclex
	ret
	END(setfsr)