xref: /netbsd-src/lib/libc/arch/x86_64/gen/fpsetround.S (revision 0dd5877adce57db949b16ae963e5a6831cccdfb6)
1/*	$NetBSD: fpsetround.S,v 1.2 2002/01/13 21:45:52 thorpej Exp $	*/
2
3/*
4 * Written by Charles M. Hannum, Apr 9, 1995
5 * Public domain.
6 */
7
8#include <machine/asm.h>
9
10#ifdef WEAK_ALIAS
11WEAK_ALIAS(fpsetround, _fpsetround)
12ENTRY(_fpsetround)
13#else
14ENTRY(fpsetround)
15#endif
16	fnstcw -4(%rsp)
17	movl -4(%rsp),%eax
18
19	rorl $10,%eax
20	movl %eax,%edx
21	andl $3,%eax
22
23	subl %eax,%edx
24	andl $3,%edi
25	orl %edi,%edx
26	roll $10,%edx
27	movl %edx,-4(%rsp)
28	fldcw -4(%rsp)
29	ret
30