ReactOS 0.4.16-dev-2491-g3dc6630
fpreset.c
Go to the documentation of this file.
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 */
13void 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
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}
#define CDECL
Definition: compat.h:29
BOOL WINAPI IsProcessorFeaturePresent(IN DWORD ProcessorFeature)
Definition: sysinfo.c:169
void CDECL _fpreset(void)
Definition: fpreset.c:13
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tsub %rbp, %rax\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tpush %rbx\n" "\t.seh_pushreg %rbx\n" "\tpush %rdi\n" "\t.seh_pushreg %rdi\n" "\tpush %rsi\n" "\t.seh_pushreg %rsi\n" "\tpush %r12\n" "\t.seh_pushreg %r12\n" "\tpush %r13\n" "\t.seh_pushreg %r13\n" "\tpush %r14\n" "\t.seh_pushreg %r14\n" "\tpush %r15\n" "\t.seh_pushreg %r15\n" "\tsub $40, %rsp\n" "\t.seh_stackalloc 40\n" "\t.seh_endprologue\n" "\tsub %rax, %rdx\n" "\tmov %rdx, %rbp\n" "\tjmp *%r8\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $40, %rsp\n" "\tpop %r15\n" "\tpop %r14\n" "\tpop %r13\n" "\tpop %r12\n" "\tpop %rsi\n" "\tpop %rdi\n" "\tpop %rbx\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")
#define PF_XMMI64_INSTRUCTIONS_AVAILABLE
Definition: ketypes.h:186