Messages in this thread | | | Date | Thu, 9 Jul 1998 00:41:41 -0400 (EDT) | From | Rafael Reilova <> | Subject | Ultimate Cyrix CPU detection [PATCH] 2.1.108 |
| |
Hi,
The following patch against 2.1.108 should correctly detect all Cyrix CPU ever made (and then some). Everything that was previously done in assembly in head.S (which gave us the problem with the BX chipset) has been C'ified and moved to bugs.h.
The patch also decodes the silicon stepping numbers to match those printed on-chip and in publications. Supports extended cpuid levels for the Mxi and MXm (untested). Finally it fixes the two problems with the 686(L) CPU's: enabling cpuid, and reseting the SLOP bit for the udelay calibration (BogoMIPS).
Of course, I can't possibly test all those chips so I'm posting to the list for feedback.
Changes: - complete rewrite of the cyrix_model() in setup.c, using the algorithm kindly provided by Channing Corn from Cyrix. (BTW, I did the implemetation so flames here, not to Channing.)
- added the function do_cyrix_devid() to setup.c to take care of reading the Cyrix DIR registers if available for correct CPU id.
- removes all Cyrix entries from cpu_model_info (no longer needed)
- moves cpuid function, adds Cyrix CPU index register defines and access macros to processor.h
- adds the function check_cyrix_cpu() to correctly (and safely) identify Cyrix CPU's without cpuid to bugs.h
- adds the function check_cx686_cpuid_slop() to correct the above mentioned problems with the Cx686(L) processors to bugs.h
Please let me know if any chips aren't detected properly, or if any breakage happens. If this is correct we can remove the #ifdef 0 code from head.S for good.
Cheers,
Rafael
[PS: Andrew Balsa is currently cooking the 2.0.x version (and helped a lot with this one)... so those Cyrix users not on the bleeding edge don't despair ;) ]
[unhandled content-type:application/octet-stream] | |