Index: trunk/i386/libsaio/cpu.c =================================================================== --- trunk/i386/libsaio/cpu.c (revision 1195) +++ trunk/i386/libsaio/cpu.c (revision 1196) @@ -451,7 +451,7 @@ p->CPU.Features |= CPU_FEATURE_MOBILE; } } - else if((p->CPU.Vendor == 0x68747541 /* AMD */) && (p->CPU.Family == 0x0f)) + else if((p->CPU.Vendor == CPUID_VENDOR_AMD) && (p->CPU.Family == 0x0f)) { switch(p->CPU.ExtFamily) { @@ -467,8 +467,8 @@ uint64_t aperf = measure_aperf_frequency(); // NOTE: tsc runs at the maccoeff (non turbo) // *not* at the turbo frequency. - maxcoef = bitfield(msr, 54, 49) / 2 + 4; // VRIFY - currcoef = bitfield(msr, 5, 0) + 0x10; // note: this is * 2 + maxcoef = bitfield(msr, 54, 49) / 2 + 4; + currcoef = bitfield(msr, 5, 0) + 0x10; currdiv = 2 << bitfield(msr, 8, 6); cpuFrequency = aperf; @@ -487,8 +487,11 @@ break; } - if (maxcoef) { - if (currdiv) { + if (maxcoef) + { + if (currdiv) + { + if(!currcoef) currcoef = maxcoef; if(!cpuFrequency) fsbFrequency = ((tscFrequency * currdiv) / currcoef); else