ShadowFlare wrote:
--- Mike Nordell tamlin@algonet.se wrote:
IIRC Win95 and NT4 knew nothing but plain FPU. fxsave & co were introduced with the introduction of WDM, in Win98 and NT5.
/Mike
If that's the case, would running multiple programs that try to use these other types of instructions cause random crashes?
-ShadowFlare
If that was the case Intel would have broken backwards compatibility which they do not do usually I think... If an OS does not know about a feature, it does usually not enable it and the processor acts like it would without the feature in most cases I think. (since it's disabled ;-)
In cr4 (Control Register number 4) is a bit called OSFXSR which means "Operating System support for FXSAVE and FXRSTOR" - if it's not set SSE instructions are disabled.
From the IA-32 manual: "When set, this flag preforms the following functions: (1) indicates to software that the operating system supports the use of the FXSAVE and FXRSTOR instructions, (2) enables the FXSAVE and FXRSTOR instructions to save and restore the contents of the XMM and MXCSR registers along with the contents of the x87 FPU and MMX registers, and (3) enables the processor to execute any of the SSE/SSE2/SSE3 instruc-tions, with the exception of the PAUSE, PREFETCHh, SFENCE, LFENCE, MFENCE, MOVNTI, and CLFLUSH. If this flag is clear, the FXSAVE and FXRSTOR instructions will save and restore the contents of the x87 FPU and MMX instructions, but they may not save and restore the contents of the XMM and MXCSR registers. Also, if this flag is clear, the processor will generate an invalid opcode exception (#UD) whenever it attempts to execute an SSE/SSE2/SSE3 instruction, with the exception of the PAUSE, PREFETCHh, SFENCE, LFENCE, MFENCE, MOVNTI, and CLFLUSH. The operating system or executive must explicitly set this flag."
You can get the PDFs at http://developer.intel.com/design/PentiumIII/documentation.htm#manuals (IA-32 Intel Architecture Software Developer’s Manual Volume 1, 2A, 2B, 3)