tools/llvm: Do not build with symbols
[minix3.git] / lib / libc / arch / x86_64 / gen / fpsetround.S
blob96422ba36a4eaa6bf9939a6d513e0fe5fdf9be76
1 /*      $NetBSD: fpsetround.S,v 1.4 2011/09/30 17:42:34 christos Exp $  */
3 /*
4  * Written by Frank van der Linden at Wasabi Systems for NetBSD.
5  * Public domain.
6  */
8 #include <machine/asm.h>
11  * XXX set both the x87 control word and the SSE mxcsr register.
12  * Applications should only set exception and round flags
13  * via the fp*() interface, otherwise the status words
14  * will get our of sync.
15  */ 
18 #ifdef WEAK_ALIAS
19 WEAK_ALIAS(fpsetround, _fpsetround)
20 ENTRY(_fpsetround)
21 #else
22 ENTRY(fpsetround)
23 #endif
25         fnstcw  -4(%rsp)
26         movl    -4(%rsp), %edx
27         movl    %edx, %eax
28         andl    $0x00000c00, %eax       
29         andl    $0xfffff3ff, %edx
30         orl     %edi, %edx
31         movl    %edx, -4(%rsp)
32         fldcw   -4(%rsp)
34         stmxcsr -4(%rsp)
35         movl    -4(%rsp), %edx
36         andl    $0xffff9fff, %edx
37         sall    $3, %edi
38         orl     %edi,%edx
39         movl    %edx,-4(%rsp)
40         ldmxcsr -4(%rsp)
42         ret