tools/llvm: Do not build with symbols
[minix3.git] / lib / libc / arch / x86_64 / gen / fpsetmask.S
blob4d4896661a2230b783b5391ed9e00b0ce556cbea
1 /*      $NetBSD: fpsetmask.S,v 1.5 2012/01/19 16:37:18 drochner 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  */
17 #ifdef WEAK_ALIAS
18 WEAK_ALIAS(fpsetmask, _fpsetmask)
19 ENTRY(_fpsetmask)
20 #else
21 ENTRY(fpsetmask)
22 #endif
23         notl    %edi
24         andl    $0x0000003f,%edi
26         fnstcw  -4(%rsp)
27         movl    -4(%rsp), %edx
28         movl    %edx, %eax
29         andl    $0xffffffc0, %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    $0xffffe07f, %edx
37         sall    $7, %edi
38         orl     %edi, %edx
39         movl    %edx,-4(%rsp)
40         ldmxcsr -4(%rsp)
42         notl    %eax
43         andl    $0x0000003f, %eax
44         ret