xref: /reactos/sdk/lib/crt/float/i386/fpreset.c (revision 40462c92)
1 /*
2  * COPYRIGHT:   See COPYING.LIB in the top level directory
3  * PROJECT:     ReactOS system libraries
4  * PURPOSE:     Resets FPU state to the default
5  * PROGRAMER:   Thomas Faber <thomas.faber@reactos.org>
6  */
7 
8 #include <precomp.h>
9 
10 /*********************************************************************
11  *		_fpreset (MSVCRT.@)
12  */
13 void CDECL _fpreset(void)
14 {
15     const unsigned short x86_cw = 0x27f;
16 #ifdef _MSC_VER
17     __asm { fninit }
18     __asm { fldcw [x86_cw] }
19 #else
20     __asm__ __volatile__( "fninit; fldcw %0" : : "m" (x86_cw) );
21 #endif
22     if (IsProcessorFeaturePresent(PF_XMMI64_INSTRUCTIONS_AVAILABLE))
23     {
24           const unsigned long sse2_cw = 0x1f80;
25 #ifdef _MSC_VER
26         __asm { ldmxcsr [sse2_cw] }
27 #else
28         __asm__ __volatile__( "ldmxcsr %0" : : "m" (sse2_cw) );
29 #endif
30     }
31 }
32