Remove building with NOCRYPTO option
[minix3.git] / lib / libc / arch / x86_64 / gen / fpsetmask.S
blob051fd5a4086641d487435be07bc9e2c4bc4e337e
1 /*      $NetBSD: fpsetmask.S,v 1.6 2014/05/22 15:01:56 uebayasi 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
45 #ifdef WEAK_ALIAS
46 END(_fpsetmask)
47 #else
48 END(fpsetmask)
49 #endif