Cyrix CPUID

Cyrix 5x86, 6x86, 6x86MX, and mII CPUs, while supposedly supporting CPUID, do not have it "enabled" by default, and will fail the "supports CPUID" test, and crash if you call the CPUID instruction. There are various utilities available that can enable this CPUID instruction, and I have noticed that some BIOSes now have a configuration option to enable CPUID on the 6x86 / mII.

Cyrix' official release as to this CPU problem is that it defaults to disabled "to avoid compatibility problems with software which makes assumptions about the features of the hardware based on the processor family". For example, the 6x86 CPU returns family "5" (i.e. "Pentium-family"), however it does not support some of the features present on family "5" CPUs manufactured by Intel and AMD, such as the TSC.

Some software, upon reading family 5, then tries to access the TSC without determining it's existence. This software would fail on a 6x86 CPU if CPUID were enabled. The bad news is, for correct programmers, that the CPUID instruction is reported as not available.

All is not lost! The following two links are code to detect a Cyrix processor (without using CPUID), and to enable the CPUID instruction on the processor. Always make sure it's a Cyrix processor before attempting to enable CPUID!