Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#ifdef _X86_
unsigned char _fltused;
long __cdecl float2long(float arg) { long rval;
__asm { fld arg ; Put <arg> into FPU fistp rval ; Write out the long version }
return rval; }
unsigned short __cdecl floatSetup(void) { unsigned short oldCWord; unsigned short newCWord;
__asm { wait ; Let any pending FPU operations finish fnstcw word ptr oldCWord ; w/o blocking, store FPU Control word wait ; Wait for the store to complete mov ax,word ptr oldCWord ; Load the CW into AX or ah,0Ch ; Ensure the rounding bits are correct mov word ptr newCWord,ax ; Save the modified CW from AX fldcw word ptr newCWord ; Reset the control word with new value }
return oldCWord; }
void __cdecl floatRestore(unsigned short ctlWord) { __asm { wait ; Let any pending FPU operations finish fldcw word ptr ctlWord ; Restore the CW from the original } }
#endif //_X86_
|