1.1 --- a/Hardware/CPU/IntelCPU.cs Sun Jun 09 16:08:59 2013 +0000
1.2 +++ b/Hardware/CPU/IntelCPU.cs Sun Jun 09 16:10:43 2013 +0000
1.3 @@ -4,7 +4,7 @@
1.4 License, v. 2.0. If a copy of the MPL was not distributed with this
1.5 file, You can obtain one at http://mozilla.org/MPL/2.0/.
1.6
1.7 - Copyright (C) 2009-2012 Michael Möller <mmoeller@openhardwaremonitor.org>
1.8 + Copyright (C) 2009-2013 Michael Möller <mmoeller@openhardwaremonitor.org>
1.9
1.10 */
1.11
1.12 @@ -22,7 +22,8 @@
1.13 Atom,
1.14 Nehalem,
1.15 SandyBridge,
1.16 - IvyBridge
1.17 + IvyBridge,
1.18 + Haswell
1.19 }
1.20
1.21 private readonly Sensor[] coreTemperatures;
1.22 @@ -134,6 +135,12 @@
1.23 microarchitecture = Microarchitecture.IvyBridge;
1.24 tjMax = GetTjMaxFromMSR();
1.25 break;
1.26 + case 0x3C: // Intel Core i5, i7 4xxx LGA1150 (22nm)
1.27 + case 0x45:
1.28 + case 0x46:
1.29 + microarchitecture = Microarchitecture.Haswell;
1.30 + tjMax = GetTjMaxFromMSR();
1.31 + break;
1.32 default:
1.33 microarchitecture = Microarchitecture.Unknown;
1.34 tjMax = Floats(100);
1.35 @@ -176,7 +183,8 @@
1.36 } break;
1.37 case Microarchitecture.Nehalem:
1.38 case Microarchitecture.SandyBridge:
1.39 - case Microarchitecture.IvyBridge: {
1.40 + case Microarchitecture.IvyBridge:
1.41 + case Microarchitecture.Haswell: {
1.42 uint eax, edx;
1.43 if (Ring0.Rdmsr(MSR_PLATFORM_INFO, out eax, out edx)) {
1.44 timeStampCounterMultiplier = (eax >> 8) & 0xff;
1.45 @@ -234,7 +242,8 @@
1.46 }
1.47
1.48 if (microarchitecture == Microarchitecture.SandyBridge ||
1.49 - microarchitecture == Microarchitecture.IvyBridge)
1.50 + microarchitecture == Microarchitecture.IvyBridge ||
1.51 + microarchitecture == Microarchitecture.Haswell)
1.52 {
1.53 powerSensors = new Sensor[energyStatusMSRs.Length];
1.54 lastEnergyTime = new DateTime[energyStatusMSRs.Length];
1.55 @@ -341,7 +350,8 @@
1.56 coreClocks[i].Value = (float)(multiplier * newBusClock);
1.57 } break;
1.58 case Microarchitecture.SandyBridge:
1.59 - case Microarchitecture.IvyBridge: {
1.60 + case Microarchitecture.IvyBridge:
1.61 + case Microarchitecture.Haswell: {
1.62 uint multiplier = (eax >> 8) & 0xff;
1.63 coreClocks[i].Value = (float)(multiplier * newBusClock);
1.64 } break;