vm: fix a null dereference on out-of-memory
[minix.git] / lib / libc / arch / x86_64 / gen / fpsetround.S
blob68e275f770c86bf956836e5bc46f0c628825cb7e
1 /*      $NetBSD: fpsetround.S,v 1.3 2002/06/12 19:17:22 fvdl 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
24         fnstcw  -4(%rsp)
25         stmxcsr -8(%rsp)
27         andl    $3,%edi
29         movl    -4(%rsp),%edx
30         rorl    $10,%edx
31         movl    %edx,%eax
32         andl    $3,%eax
34         andl    $~3,%edx
35         orl     %edi,%edx
36         roll    $10,%edx
37         movl    %edx,-4(%rsp)
39         movl    -8(%rsp),%edx
40         rorl    $13,%edx
41         andl    $~3,%edx
42         orl     %edi,%edx
43         roll    $13,%edx
44         movl    %edx,-8(%rsp)
46         ldmxcsr -8(%rsp)
47         fldcw   -4(%rsp)
48         ret