Changeset View
Changeset View
Standalone View
Standalone View
sys/x86/include/x86_ieeefp.h
Show First 20 Lines • Show All 102 Lines • ▼ Show 20 Lines | |||||
#define FP_PRC_OFF 8 /* precision control offset */ | #define FP_PRC_OFF 8 /* precision control offset */ | ||||
#define FP_RND_OFF 10 /* rounding control offset */ | #define FP_RND_OFF 10 /* rounding control offset */ | ||||
/* | /* | ||||
* FPU status word bit-field offsets (shift counts). | * FPU status word bit-field offsets (shift counts). | ||||
*/ | */ | ||||
#define FP_STKY_OFF 0 /* sticky flags offset */ | #define FP_STKY_OFF 0 /* sticky flags offset */ | ||||
#ifdef __GNUCLIKE_ASM | |||||
#define __fldcw(addr) __asm __volatile("fldcw %0" : : "m" (*(addr))) | #define __fldcw(addr) __asm __volatile("fldcw %0" : : "m" (*(addr))) | ||||
#define __fldenv(addr) __asm __volatile("fldenv %0" : : "m" (*(addr))) | #define __fldenv(addr) __asm __volatile("fldenv %0" : : "m" (*(addr))) | ||||
#define __fnclex() __asm __volatile("fnclex") | #define __fnclex() __asm __volatile("fnclex") | ||||
#define __fnstcw(addr) __asm __volatile("fnstcw %0" : "=m" (*(addr))) | #define __fnstcw(addr) __asm __volatile("fnstcw %0" : "=m" (*(addr))) | ||||
#define __fnstenv(addr) __asm __volatile("fnstenv %0" : "=m" (*(addr))) | #define __fnstenv(addr) __asm __volatile("fnstenv %0" : "=m" (*(addr))) | ||||
#define __fnstsw(addr) __asm __volatile("fnstsw %0" : "=m" (*(addr))) | #define __fnstsw(addr) __asm __volatile("fnstsw %0" : "=m" (*(addr))) | ||||
#define __ldmxcsr(addr) __asm __volatile("ldmxcsr %0" : : "m" (*(addr))) | #define __ldmxcsr(addr) __asm __volatile("ldmxcsr %0" : : "m" (*(addr))) | ||||
#define __stmxcsr(addr) __asm __volatile("stmxcsr %0" : "=m" (*(addr))) | #define __stmxcsr(addr) __asm __volatile("stmxcsr %0" : "=m" (*(addr))) | ||||
Show All 20 Lines | if (((_sw & ~_cw) & FP_STKY_FLD) != 0) { | ||||
__fnstenv(&_env); | __fnstenv(&_env); | ||||
_env._cw = _newcw; | _env._cw = _newcw; | ||||
__fldenv(&_env); | __fldenv(&_env); | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
__fldcw(&_newcw); | __fldcw(&_newcw); | ||||
} | } | ||||
#endif /* __GNUCLIKE_ASM */ | |||||
#endif/* _X86_X86_IEEEFP_H_ */ | #endif/* _X86_X86_IEEEFP_H_ */ |