1.1 --- a/Hardware/CPU/IntelCPU.cs Mon Sep 27 23:48:41 2010 +0000
1.2 +++ b/Hardware/CPU/IntelCPU.cs Thu Sep 30 16:51:09 2010 +0000
1.3 @@ -145,7 +145,7 @@
1.4 for (int i = 0; i < coreClocks.Length; i++) {
1.5 coreClocks[i] =
1.6 new Sensor(CoreString(i), i + 1, SensorType.Clock, this, settings);
1.7 - if (hasTSC)
1.8 + if (HasTimeStampCounter)
1.9 ActivateSensor(coreClocks[i]);
1.10 }
1.11
1.12 @@ -182,7 +182,7 @@
1.13 }
1.14 }
1.15
1.16 - if (hasTSC) {
1.17 + if (HasTimeStampCounter) {
1.18 double newBusClock = 0;
1.19 uint eax, edx;
1.20 for (int i = 0; i < coreClocks.Length; i++) {
1.21 @@ -191,9 +191,10 @@
1.22 (UIntPtr)(1L << cpuid[i][0].Thread))) {
1.23 if (maxNehalemMultiplier > 0) { // Core i3, i5, i7
1.24 uint nehalemMultiplier = eax & 0xff;
1.25 - coreClocks[i].Value =
1.26 - (float)(nehalemMultiplier * MaxClock / maxNehalemMultiplier);
1.27 - newBusClock = (float)(MaxClock / maxNehalemMultiplier);
1.28 + coreClocks[i].Value =(float)(nehalemMultiplier *
1.29 + TimeStampCounterFrequency / maxNehalemMultiplier);
1.30 + newBusClock =
1.31 + (float)(TimeStampCounterFrequency / maxNehalemMultiplier);
1.32 } else { // Core 2
1.33 uint multiplier = (eax >> 8) & 0x1f;
1.34 uint maxMultiplier = (edx >> 8) & 0x1f;
1.35 @@ -201,13 +202,15 @@
1.36 uint factor = (multiplier << 1) | ((eax >> 14) & 1);
1.37 uint maxFactor = (maxMultiplier << 1) | ((edx >> 14) & 1);
1.38 if (maxFactor > 0) {
1.39 - coreClocks[i].Value = (float)(factor * MaxClock / maxFactor);
1.40 - newBusClock = (float)(2 * MaxClock / maxFactor);
1.41 + coreClocks[i].Value =
1.42 + (float)(factor * TimeStampCounterFrequency / maxFactor);
1.43 + newBusClock =
1.44 + (float)(2 * TimeStampCounterFrequency / maxFactor);
1.45 }
1.46 }
1.47 } else { // Intel Pentium 4
1.48 - // if IA32_PERF_STATUS is not available, assume maxClock
1.49 - coreClocks[i].Value = (float)MaxClock;
1.50 + // if IA32_PERF_STATUS is not available, assume TSC frequency
1.51 + coreClocks[i].Value = (float)TimeStampCounterFrequency;
1.52 }
1.53 }
1.54 if (newBusClock > 0) {