4 * Licensed under the terms of the GNU GPL License version 2.
10 #include "../x86info.h"
12 void interpret_eblcr(u32 lo)
14 const unsigned int buscode[2][4] = {
15 { 6667, 13333, 10000, 0 },
16 { 10000, 13333, 10000, 0 }
19 const unsigned int mult[32] = {
20 10, 6, 8, 0, 11, 7, 9, 0,
21 10, 14, 16, 12, 0, 15, 0, 13,
22 0, 0, 0, 0, 0, 0, 17, 0,
23 0, 0, 0, 0, 0, 0, 0, 0
26 int bus = (lo >> 18) & 3;
27 int mul = (lo >> 22) & 15;
30 return; /* too many bugs right now.. fix for a future release */
32 if (!user_is_root || !show_eblcr)
37 * 766MHz Celeron. 66MHz x 11.5 Being picked up as 133x5.0
41 /* printf("bus:%x mul:%x\n", bus, mul);*/
43 /* The mobile pIII added bit 27.
44 * This is zero on other intel and on the cyrix III */
49 busclock = buscode[1][bus]/100;
51 if (busclock == 0 || mult[mul] == 0)
52 printf("Unknown CPU/BUS multiplier (%d X %dMHz, %x).\n", mul, bus, lo);
54 cpuclk = (buscode[1][bus] * mult[mul])/200;
55 printf("Bus Speed (%dMHz) x Multiplier (%.1fx) = CPU speed %dMhz\n",
57 (float) cpuclk/busclock,