2 MSR Definitions for the Intel(R) Core(TM) 2 Processor Family.
4 Provides defines for Machine Specific Registers(MSR) indexes. Data structures
5 are provided for MSRs that contain one or more bit fields. If the MSR value
6 returned is a single 32-bit or 64-bit value, then a data structure is not
9 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
10 This program and the accompanying materials
11 are licensed and made available under the terms and conditions of the BSD License
12 which accompanies this distribution. The full text of the license may be found at
13 http://opensource.org/licenses/bsd-license.php
15 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
16 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 @par Specification Reference:
19 Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
20 December 2015, Chapter 35 Model-Specific-Registers (MSR), Section 35-2.
24 #ifndef __CORE2_MSR_H__
25 #define __CORE2_MSR_H__
27 #include <Register/ArchitecturalMsr.h>
30 Shared. Model Specific Platform ID (R).
32 @param ECX MSR_CORE2_PLATFORM_ID (0x00000017)
33 @param EAX Lower 32-bits of MSR value.
34 Described by the type MSR_CORE2_PLATFORM_ID_REGISTER.
35 @param EDX Upper 32-bits of MSR value.
36 Described by the type MSR_CORE2_PLATFORM_ID_REGISTER.
40 MSR_CORE2_PLATFORM_ID_REGISTER Msr;
42 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_PLATFORM_ID);
44 @note MSR_CORE2_PLATFORM_ID is defined as MSR_PLATFORM_ID in SDM.
46 #define MSR_CORE2_PLATFORM_ID 0x00000017
49 MSR information returned for MSR index #MSR_CORE2_PLATFORM_ID
53 /// Individual bit fields
58 /// [Bits 12:8] Maximum Qualified Ratio (R) The maximum allowed bus ratio.
60 UINT32 MaximumQualifiedRatio
:5;
64 /// [Bits 52:50] See Table 35-2.
70 /// All bit fields as a 64-bit value
73 } MSR_CORE2_PLATFORM_ID_REGISTER
;
77 Shared. Processor Hard Power-On Configuration (R/W) Enables and disables
78 processor features; (R) indicates current processor configuration.
80 @param ECX MSR_CORE2_EBL_CR_POWERON (0x0000002A)
81 @param EAX Lower 32-bits of MSR value.
82 Described by the type MSR_CORE2_EBL_CR_POWERON_REGISTER.
83 @param EDX Upper 32-bits of MSR value.
84 Described by the type MSR_CORE2_EBL_CR_POWERON_REGISTER.
88 MSR_CORE2_EBL_CR_POWERON_REGISTER Msr;
90 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_EBL_CR_POWERON);
91 AsmWriteMsr64 (MSR_CORE2_EBL_CR_POWERON, Msr.Uint64);
93 @note MSR_CORE2_EBL_CR_POWERON is defined as MSR_EBL_CR_POWERON in SDM.
95 #define MSR_CORE2_EBL_CR_POWERON 0x0000002A
98 MSR information returned for MSR index #MSR_CORE2_EBL_CR_POWERON
102 /// Individual bit fields
107 /// [Bit 1] Data Error Checking Enable (R/W) 1 = Enabled; 0 = Disabled
108 /// Note: Not all processor implements R/W.
110 UINT32 DataErrorCheckingEnable
:1;
112 /// [Bit 2] Response Error Checking Enable (R/W) 1 = Enabled; 0 = Disabled
113 /// Note: Not all processor implements R/W.
115 UINT32 ResponseErrorCheckingEnable
:1;
117 /// [Bit 3] MCERR# Drive Enable (R/W) 1 = Enabled; 0 = Disabled Note: Not
118 /// all processor implements R/W.
120 UINT32 MCERR_DriveEnable
:1;
122 /// [Bit 4] Address Parity Enable (R/W) 1 = Enabled; 0 = Disabled Note:
123 /// Not all processor implements R/W.
125 UINT32 AddressParityEnable
:1;
129 /// [Bit 7] BINIT# Driver Enable (R/W) 1 = Enabled; 0 = Disabled Note: Not
130 /// all processor implements R/W.
132 UINT32 BINIT_DriverEnable
:1;
134 /// [Bit 8] Output Tri-state Enabled (R/O) 1 = Enabled; 0 = Disabled.
136 UINT32 OutputTriStateEnable
:1;
138 /// [Bit 9] Execute BIST (R/O) 1 = Enabled; 0 = Disabled.
140 UINT32 ExecuteBIST
:1;
142 /// [Bit 10] MCERR# Observation Enabled (R/O) 1 = Enabled; 0 = Disabled.
144 UINT32 MCERR_ObservationEnabled
:1;
146 /// [Bit 11] Intel TXT Capable Chipset. (R/O) 1 = Present; 0 = Not Present.
148 UINT32 IntelTXTCapableChipset
:1;
150 /// [Bit 12] BINIT# Observation Enabled (R/O) 1 = Enabled; 0 = Disabled.
152 UINT32 BINIT_ObservationEnabled
:1;
155 /// [Bit 14] 1 MByte Power on Reset Vector (R/O) 1 = 1 MByte; 0 = 4 GBytes.
157 UINT32 ResetVector
:1;
160 /// [Bits 17:16] APIC Cluster ID (R/O).
162 UINT32 APICClusterID
:2;
164 /// [Bit 18] N/2 Non-Integer Bus Ratio (R/O) 0 = Integer ratio; 1 =
165 /// Non-integer ratio.
167 UINT32 NonIntegerBusRatio
:1;
170 /// [Bits 21:20] Symmetric Arbitration ID (R/O).
172 UINT32 SymmetricArbitrationID
:2;
174 /// [Bits 26:22] Integer Bus Frequency Ratio (R/O).
176 UINT32 IntegerBusFrequencyRatio
:5;
181 /// All bit fields as a 32-bit value
185 /// All bit fields as a 64-bit value
188 } MSR_CORE2_EBL_CR_POWERON_REGISTER
;
192 Unique. Control Features in Intel 64Processor (R/W) See Table 35-2.
194 @param ECX MSR_CORE2_FEATURE_CONTROL (0x0000003A)
195 @param EAX Lower 32-bits of MSR value.
196 Described by the type MSR_CORE2_FEATURE_CONTROL_REGISTER.
197 @param EDX Upper 32-bits of MSR value.
198 Described by the type MSR_CORE2_FEATURE_CONTROL_REGISTER.
202 MSR_CORE2_FEATURE_CONTROL_REGISTER Msr;
204 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_FEATURE_CONTROL);
205 AsmWriteMsr64 (MSR_CORE2_FEATURE_CONTROL, Msr.Uint64);
207 @note MSR_CORE2_FEATURE_CONTROL is defined as MSR_FEATURE_CONTROL in SDM.
209 #define MSR_CORE2_FEATURE_CONTROL 0x0000003A
212 MSR information returned for MSR index #MSR_CORE2_FEATURE_CONTROL
216 /// Individual bit fields
221 /// [Bit 3] Unique. SMRR Enable (R/WL) When this bit is set and the lock
222 /// bit is set makes the SMRR_PHYS_BASE and SMRR_PHYS_MASK registers read
223 /// visible and writeable while in SMM.
230 /// All bit fields as a 32-bit value
234 /// All bit fields as a 64-bit value
237 } MSR_CORE2_FEATURE_CONTROL_REGISTER
;
241 Unique. Last Branch Record n From IP (R/W) One of four pairs of last branch
242 record registers on the last branch record stack. This part of the stack
243 contains pointers to the source instruction for one of the last four
244 branches, exceptions, or interrupts taken by the processor. See also: -
245 Last Branch Record Stack TOS at 1C9H - Section 17.12, "Last Branch,
246 Interrupt, and Exception Recording (Pentium M Processors).".
248 @param ECX MSR_CORE2_LASTBRANCH_n_FROM_IP
249 @param EAX Lower 32-bits of MSR value.
250 @param EDX Upper 32-bits of MSR value.
256 Msr = AsmReadMsr64 (MSR_CORE2_LASTBRANCH_0_FROM_IP);
257 AsmWriteMsr64 (MSR_CORE2_LASTBRANCH_0_FROM_IP, Msr);
259 @note MSR_CORE2_LASTBRANCH_0_FROM_IP is defined as MSR_LASTBRANCH_0_FROM_IP in SDM.
260 MSR_CORE2_LASTBRANCH_1_FROM_IP is defined as MSR_LASTBRANCH_1_FROM_IP in SDM.
261 MSR_CORE2_LASTBRANCH_2_FROM_IP is defined as MSR_LASTBRANCH_2_FROM_IP in SDM.
262 MSR_CORE2_LASTBRANCH_3_FROM_IP is defined as MSR_LASTBRANCH_3_FROM_IP in SDM.
265 #define MSR_CORE2_LASTBRANCH_0_FROM_IP 0x00000040
266 #define MSR_CORE2_LASTBRANCH_1_FROM_IP 0x00000041
267 #define MSR_CORE2_LASTBRANCH_2_FROM_IP 0x00000042
268 #define MSR_CORE2_LASTBRANCH_3_FROM_IP 0x00000043
273 Unique. Last Branch Record n To IP (R/W) One of four pairs of last branch
274 record registers on the last branch record stack. This part of the stack
275 contains pointers to the destination instruction for one of the last four
276 branches, exceptions, or interrupts taken by the processor.
278 @param ECX MSR_CORE2_LASTBRANCH_n_TO_IP
279 @param EAX Lower 32-bits of MSR value.
280 @param EDX Upper 32-bits of MSR value.
286 Msr = AsmReadMsr64 (MSR_CORE2_LASTBRANCH_0_TO_IP);
287 AsmWriteMsr64 (MSR_CORE2_LASTBRANCH_0_TO_IP, Msr);
289 @note MSR_CORE2_LASTBRANCH_0_TO_IP is defined as MSR_LASTBRANCH_0_TO_IP in SDM.
290 MSR_CORE2_LASTBRANCH_1_TO_IP is defined as MSR_LASTBRANCH_1_TO_IP in SDM.
291 MSR_CORE2_LASTBRANCH_2_TO_IP is defined as MSR_LASTBRANCH_2_TO_IP in SDM.
292 MSR_CORE2_LASTBRANCH_3_TO_IP is defined as MSR_LASTBRANCH_3_TO_IP in SDM.
295 #define MSR_CORE2_LASTBRANCH_0_TO_IP 0x00000060
296 #define MSR_CORE2_LASTBRANCH_1_TO_IP 0x00000061
297 #define MSR_CORE2_LASTBRANCH_2_TO_IP 0x00000062
298 #define MSR_CORE2_LASTBRANCH_3_TO_IP 0x00000063
303 Unique. System Management Mode Base Address register (WO in SMM)
304 Model-specific implementation of SMRR-like interface, read visible and write
307 @param ECX MSR_CORE2_SMRR_PHYSBASE (0x000000A0)
308 @param EAX Lower 32-bits of MSR value.
309 Described by the type MSR_CORE2_SMRR_PHYSBASE_REGISTER.
310 @param EDX Upper 32-bits of MSR value.
311 Described by the type MSR_CORE2_SMRR_PHYSBASE_REGISTER.
315 MSR_CORE2_SMRR_PHYSBASE_REGISTER Msr;
318 AsmWriteMsr64 (MSR_CORE2_SMRR_PHYSBASE, Msr.Uint64);
320 @note MSR_CORE2_SMRR_PHYSBASE is defined as MSR_SMRR_PHYSBASE in SDM.
322 #define MSR_CORE2_SMRR_PHYSBASE 0x000000A0
325 MSR information returned for MSR index #MSR_CORE2_SMRR_PHYSBASE
329 /// Individual bit fields
334 /// [Bits 31:12] PhysBase. SMRR physical Base Address.
340 /// All bit fields as a 32-bit value
344 /// All bit fields as a 64-bit value
347 } MSR_CORE2_SMRR_PHYSBASE_REGISTER
;
351 Unique. System Management Mode Physical Address Mask register (WO in SMM)
352 Model-specific implementation of SMRR-like interface, read visible and write
355 @param ECX MSR_CORE2_SMRR_PHYSMASK (0x000000A1)
356 @param EAX Lower 32-bits of MSR value.
357 Described by the type MSR_CORE2_SMRR_PHYSMASK_REGISTER.
358 @param EDX Upper 32-bits of MSR value.
359 Described by the type MSR_CORE2_SMRR_PHYSMASK_REGISTER.
363 MSR_CORE2_SMRR_PHYSMASK_REGISTER Msr;
366 AsmWriteMsr64 (MSR_CORE2_SMRR_PHYSMASK, Msr.Uint64);
368 @note MSR_CORE2_SMRR_PHYSMASK is defined as MSR_SMRR_PHYSMASK in SDM.
370 #define MSR_CORE2_SMRR_PHYSMASK 0x000000A1
373 MSR information returned for MSR index #MSR_CORE2_SMRR_PHYSMASK
377 /// Individual bit fields
382 /// [Bit 11] Valid. Physical address base and range mask are valid.
386 /// [Bits 31:12] PhysMask. SMRR physical address range mask.
392 /// All bit fields as a 32-bit value
396 /// All bit fields as a 64-bit value
399 } MSR_CORE2_SMRR_PHYSMASK_REGISTER
;
403 Shared. Scalable Bus Speed(RO) This field indicates the intended scalable
404 bus clock speed for processors based on Intel Core microarchitecture:.
406 @param ECX MSR_CORE2_FSB_FREQ (0x000000CD)
407 @param EAX Lower 32-bits of MSR value.
408 Described by the type MSR_CORE2_FSB_FREQ_REGISTER.
409 @param EDX Upper 32-bits of MSR value.
410 Described by the type MSR_CORE2_FSB_FREQ_REGISTER.
414 MSR_CORE2_FSB_FREQ_REGISTER Msr;
416 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_FSB_FREQ);
418 @note MSR_CORE2_FSB_FREQ is defined as MSR_FSB_FREQ in SDM.
420 #define MSR_CORE2_FSB_FREQ 0x000000CD
423 MSR information returned for MSR index #MSR_CORE2_FSB_FREQ
427 /// Individual bit fields
431 /// [Bits 2:0] - Scalable Bus Speed
432 /// 101B: 100 MHz (FSB 400)
433 /// 001B: 133 MHz (FSB 533)
434 /// 011B: 167 MHz (FSB 667)
435 /// 010B: 200 MHz (FSB 800)
436 /// 000B: 267 MHz (FSB 1067)
437 /// 100B: 333 MHz (FSB 1333)
439 /// 133.33 MHz should be utilized if performing calculation with System
440 /// Bus Speed when encoding is 001B. 166.67 MHz should be utilized if
441 /// performing calculation with System Bus Speed when encoding is 011B.
442 /// 266.67 MHz should be utilized if performing calculation with System
443 /// Bus Speed when encoding is 000B. 333.33 MHz should be utilized if
444 /// performing calculation with System Bus Speed when encoding is 100B.
446 UINT32 ScalableBusSpeed
:3;
451 /// All bit fields as a 32-bit value
455 /// All bit fields as a 64-bit value
458 } MSR_CORE2_FSB_FREQ_REGISTER
;
464 @param ECX MSR_CORE2_BBL_CR_CTL3 (0x0000011E)
465 @param EAX Lower 32-bits of MSR value.
466 Described by the type MSR_CORE2_BBL_CR_CTL3_REGISTER.
467 @param EDX Upper 32-bits of MSR value.
468 Described by the type MSR_CORE2_BBL_CR_CTL3_REGISTER.
472 MSR_CORE2_BBL_CR_CTL3_REGISTER Msr;
474 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_BBL_CR_CTL3);
475 AsmWriteMsr64 (MSR_CORE2_BBL_CR_CTL3, Msr.Uint64);
477 @note MSR_CORE2_BBL_CR_CTL3 is defined as MSR_BBL_CR_CTL3 in SDM.
479 #define MSR_CORE2_BBL_CR_CTL3 0x0000011E
482 MSR information returned for MSR index #MSR_CORE2_BBL_CR_CTL3
486 /// Individual bit fields
490 /// [Bit 0] L2 Hardware Enabled (RO) 1 = If the L2 is hardware-enabled 0 =
491 /// Indicates if the L2 is hardware-disabled.
493 UINT32 L2HardwareEnabled
:1;
496 /// [Bit 8] L2 Enabled (R/W) 1 = L2 cache has been initialized 0 =
497 /// Disabled (default) Until this bit is set the processor will not
498 /// respond to the WBINVD instruction or the assertion of the FLUSH# input.
503 /// [Bit 23] L2 Not Present (RO) 1. = L2 Present 2. = L2 Not Present.
505 UINT32 L2NotPresent
:1;
510 /// All bit fields as a 32-bit value
514 /// All bit fields as a 64-bit value
517 } MSR_CORE2_BBL_CR_CTL3_REGISTER
;
523 @param ECX MSR_CORE2_PERF_STATUS (0x00000198)
524 @param EAX Lower 32-bits of MSR value.
525 Described by the type MSR_CORE2_PERF_STATUS_REGISTER.
526 @param EDX Upper 32-bits of MSR value.
527 Described by the type MSR_CORE2_PERF_STATUS_REGISTER.
531 MSR_CORE2_PERF_STATUS_REGISTER Msr;
533 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_PERF_STATUS);
534 AsmWriteMsr64 (MSR_CORE2_PERF_STATUS, Msr.Uint64);
536 @note MSR_CORE2_PERF_STATUS is defined as MSR_PERF_STATUS in SDM.
538 #define MSR_CORE2_PERF_STATUS 0x00000198
541 MSR information returned for MSR index #MSR_CORE2_PERF_STATUS
545 /// Individual bit fields
549 /// [Bits 15:0] Current Performance State Value.
551 UINT32 CurrentPerformanceStateValue
:16;
554 /// [Bit 31] XE Operation (R/O). If set, XE operation is enabled. Default
557 UINT32 XEOperation
:1;
560 /// [Bits 44:40] Maximum Bus Ratio (R/O) Indicates maximum bus ratio
561 /// configured for the processor.
563 UINT32 MaximumBusRatio
:5;
566 /// [Bit 46] Non-Integer Bus Ratio (R/O) Indicates non-integer bus ratio
567 /// is enabled. Applies processors based on Enhanced Intel Core
568 /// microarchitecture.
570 UINT32 NonIntegerBusRatio
:1;
574 /// All bit fields as a 64-bit value
577 } MSR_CORE2_PERF_STATUS_REGISTER
;
583 @param ECX MSR_CORE2_THERM2_CTL (0x0000019D)
584 @param EAX Lower 32-bits of MSR value.
585 Described by the type MSR_CORE2_THERM2_CTL_REGISTER.
586 @param EDX Upper 32-bits of MSR value.
587 Described by the type MSR_CORE2_THERM2_CTL_REGISTER.
591 MSR_CORE2_THERM2_CTL_REGISTER Msr;
593 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_THERM2_CTL);
594 AsmWriteMsr64 (MSR_CORE2_THERM2_CTL, Msr.Uint64);
596 @note MSR_CORE2_THERM2_CTL is defined as MSR_THERM2_CTL in SDM.
598 #define MSR_CORE2_THERM2_CTL 0x0000019D
601 MSR information returned for MSR index #MSR_CORE2_THERM2_CTL
605 /// Individual bit fields
610 /// [Bit 16] TM_SELECT (R/W) Mode of automatic thermal monitor: 1. =
611 /// Thermal Monitor 1 (thermally-initiated on-die modulation of the
612 /// stop-clock duty cycle) 2. = Thermal Monitor 2 (thermally-initiated
613 /// frequency transitions) If bit 3 of the IA32_MISC_ENABLE register is
614 /// cleared, TM_SELECT has no effect. Neither TM1 nor TM2 are enabled.
621 /// All bit fields as a 32-bit value
625 /// All bit fields as a 64-bit value
628 } MSR_CORE2_THERM2_CTL_REGISTER
;
632 Enable Misc. Processor Features (R/W) Allows a variety of processor
633 functions to be enabled and disabled.
635 @param ECX MSR_CORE2_IA32_MISC_ENABLE (0x000001A0)
636 @param EAX Lower 32-bits of MSR value.
637 Described by the type MSR_CORE2_IA32_MISC_ENABLE_REGISTER.
638 @param EDX Upper 32-bits of MSR value.
639 Described by the type MSR_CORE2_IA32_MISC_ENABLE_REGISTER.
643 MSR_CORE2_IA32_MISC_ENABLE_REGISTER Msr;
645 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_IA32_MISC_ENABLE);
646 AsmWriteMsr64 (MSR_CORE2_IA32_MISC_ENABLE, Msr.Uint64);
648 @note MSR_CORE2_IA32_MISC_ENABLE is defined as IA32_MISC_ENABLE in SDM.
650 #define MSR_CORE2_IA32_MISC_ENABLE 0x000001A0
653 MSR information returned for MSR index #MSR_CORE2_IA32_MISC_ENABLE
657 /// Individual bit fields
661 /// [Bit 0] Fast-Strings Enable See Table 35-2.
663 UINT32 FastStrings
:1;
666 /// [Bit 3] Unique. Automatic Thermal Control Circuit Enable (R/W) See
669 UINT32 AutomaticThermalControlCircuit
:1;
672 /// [Bit 7] Shared. Performance Monitoring Available (R) See Table 35-2.
674 UINT32 PerformanceMonitoring
:1;
677 /// [Bit 9] Hardware Prefetcher Disable (R/W) When set, disables the
678 /// hardware prefetcher operation on streams of data. When clear
679 /// (default), enables the prefetch queue. Disabling of the hardware
680 /// prefetcher may impact processor performance.
682 UINT32 HardwarePrefetcherDisable
:1;
684 /// [Bit 10] Shared. FERR# Multiplexing Enable (R/W) 1 = FERR# asserted by
685 /// the processor to indicate a pending break event within the processor 0
686 /// = Indicates compatible FERR# signaling behavior This bit must be set
687 /// to 1 to support XAPIC interrupt model usage.
691 /// [Bit 11] Shared. Branch Trace Storage Unavailable (RO) See Table 35-2.
695 /// [Bit 12] Shared. Precise Event Based Sampling Unavailable (RO) See
700 /// [Bit 13] Shared. TM2 Enable (R/W) When this bit is set (1) and the
701 /// thermal sensor indicates that the die temperature is at the
702 /// pre-determined threshold, the Thermal Monitor 2 mechanism is engaged.
703 /// TM2 will reduce the bus to core ratio and voltage according to the
704 /// value last written to MSR_THERM2_CTL bits 15:0.
705 /// When this bit is clear (0, default), the processor does not change
706 /// the VID signals or the bus to core ratio when the processor enters a
707 /// thermally managed state. The BIOS must enable this feature if the
708 /// TM2 feature flag (CPUID.1:ECX[8]) is set; if the TM2 feature flag is
709 /// not set, this feature is not supported and BIOS must not alter the
710 /// contents of the TM2 bit location. The processor is operating out of
711 /// specification if both this bit and the TM1 bit are set to 0.
716 /// [Bit 16] Shared. Enhanced Intel SpeedStep Technology Enable (R/W) See
722 /// [Bit 18] Shared. ENABLE MONITOR FSM (R/W) See Table 35-2.
726 /// [Bit 19] Shared. Adjacent Cache Line Prefetch Disable (R/W) When set
727 /// to 1, the processor fetches the cache line that contains data
728 /// currently required by the processor. When set to 0, the processor
729 /// fetches cache lines that comprise a cache line pair (128 bytes).
730 /// Single processor platforms should not set this bit. Server platforms
731 /// should set or clear this bit based on platform performance observed in
732 /// validation and testing. BIOS may contain a setup option that controls
733 /// the setting of this bit.
735 UINT32 AdjacentCacheLinePrefetchDisable
:1;
737 /// [Bit 20] Shared. Enhanced Intel SpeedStep Technology Select Lock
738 /// (R/WO) When set, this bit causes the following bits to become
739 /// read-only: - Enhanced Intel SpeedStep Technology Select Lock (this
740 /// bit), - Enhanced Intel SpeedStep Technology Enable bit. The bit must
741 /// be set before an Enhanced Intel SpeedStep Technology transition is
742 /// requested. This bit is cleared on reset.
747 /// [Bit 22] Shared. Limit CPUID Maxval (R/W) See Table 35-2.
749 UINT32 LimitCpuidMaxval
:1;
751 /// [Bit 23] Shared. xTPR Message Disable (R/W) See Table 35-2.
753 UINT32 xTPR_Message_Disable
:1;
757 /// [Bit 34] Unique. XD Bit Disable (R/W) See Table 35-2.
762 /// [Bit 37] Unique. DCU Prefetcher Disable (R/W) When set to 1, The DCU
763 /// L1 data cache prefetcher is disabled. The default value after reset is
764 /// 0. BIOS may write '1' to disable this feature. The DCU prefetcher is
765 /// an L1 data cache prefetcher. When the DCU prefetcher detects multiple
766 /// loads from the same line done within a time limit, the DCU prefetcher
767 /// assumes the next line will be required. The next line is prefetched in
768 /// to the L1 data cache from memory or L2.
770 UINT32 DCUPrefetcherDisable
:1;
772 /// [Bit 38] Shared. IDA Disable (R/W) When set to 1 on processors that
773 /// support IDA, the Intel Dynamic Acceleration feature (IDA) is disabled
774 /// and the IDA_Enable feature flag will be clear (CPUID.06H: EAX[1]=0).
775 /// When set to a 0 on processors that support IDA, CPUID.06H: EAX[1]
776 /// reports the processor's support of IDA is enabled. Note: the power-on
777 /// default value is used by BIOS to detect hardware support of IDA. If
778 /// power-on default value is 1, IDA is available in the processor. If
779 /// power-on default value is 0, IDA is not available.
783 /// [Bit 39] Unique. IP Prefetcher Disable (R/W) When set to 1, The IP
784 /// prefetcher is disabled. The default value after reset is 0. BIOS may
785 /// write '1' to disable this feature. The IP prefetcher is an L1 data
786 /// cache prefetcher. The IP prefetcher looks for sequential load history
787 /// to determine whether to prefetch the next expected data into the L1
788 /// cache from memory or L2.
790 UINT32 IPPrefetcherDisable
:1;
791 UINT32 Reserved10
:24;
794 /// All bit fields as a 64-bit value
797 } MSR_CORE2_IA32_MISC_ENABLE_REGISTER
;
801 Unique. Last Branch Record Stack TOS (R/W) Contains an index (bits 0-3)
802 that points to the MSR containing the most recent branch record. See
803 MSR_LASTBRANCH_0_FROM_IP (at 40H).
805 @param ECX MSR_CORE2_LASTBRANCH_TOS (0x000001C9)
806 @param EAX Lower 32-bits of MSR value.
807 @param EDX Upper 32-bits of MSR value.
813 Msr = AsmReadMsr64 (MSR_CORE2_LASTBRANCH_TOS);
814 AsmWriteMsr64 (MSR_CORE2_LASTBRANCH_TOS, Msr);
816 @note MSR_CORE2_LASTBRANCH_TOS is defined as MSR_LASTBRANCH_TOS in SDM.
818 #define MSR_CORE2_LASTBRANCH_TOS 0x000001C9
822 Unique. Last Exception Record From Linear IP (R) Contains a pointer to the
823 last branch instruction that the processor executed prior to the last
824 exception that was generated or the last interrupt that was handled.
826 @param ECX MSR_CORE2_LER_FROM_LIP (0x000001DD)
827 @param EAX Lower 32-bits of MSR value.
828 @param EDX Upper 32-bits of MSR value.
834 Msr = AsmReadMsr64 (MSR_CORE2_LER_FROM_LIP);
836 @note MSR_CORE2_LER_FROM_LIP is defined as MSR_LER_FROM_LIP in SDM.
838 #define MSR_CORE2_LER_FROM_LIP 0x000001DD
842 Unique. Last Exception Record To Linear IP (R) This area contains a pointer
843 to the target of the last branch instruction that the processor executed
844 prior to the last exception that was generated or the last interrupt that
847 @param ECX MSR_CORE2_LER_TO_LIP (0x000001DE)
848 @param EAX Lower 32-bits of MSR value.
849 @param EDX Upper 32-bits of MSR value.
855 Msr = AsmReadMsr64 (MSR_CORE2_LER_TO_LIP);
857 @note MSR_CORE2_LER_TO_LIP is defined as MSR_LER_TO_LIP in SDM.
859 #define MSR_CORE2_LER_TO_LIP 0x000001DE
863 Unique. Fixed-Function Performance Counter Register n (R/W).
865 @param ECX MSR_CORE2_PERF_FIXED_CTRn
866 @param EAX Lower 32-bits of MSR value.
867 @param EDX Upper 32-bits of MSR value.
873 Msr = AsmReadMsr64 (MSR_CORE2_PERF_FIXED_CTR0);
874 AsmWriteMsr64 (MSR_CORE2_PERF_FIXED_CTR0, Msr);
876 @note MSR_CORE2_PERF_FIXED_CTR0 is defined as MSR_PERF_FIXED_CTR0 in SDM.
877 MSR_CORE2_PERF_FIXED_CTR1 is defined as MSR_PERF_FIXED_CTR1 in SDM.
878 MSR_CORE2_PERF_FIXED_CTR2 is defined as MSR_PERF_FIXED_CTR2 in SDM.
881 #define MSR_CORE2_PERF_FIXED_CTR0 0x00000309
882 #define MSR_CORE2_PERF_FIXED_CTR1 0x0000030A
883 #define MSR_CORE2_PERF_FIXED_CTR2 0x0000030B
888 Unique. RO. This applies to processors that do not support architectural
891 @param ECX MSR_CORE2_PERF_CAPABILITIES (0x00000345)
892 @param EAX Lower 32-bits of MSR value.
893 Described by the type MSR_CORE2_PERF_CAPABILITIES_REGISTER.
894 @param EDX Upper 32-bits of MSR value.
895 Described by the type MSR_CORE2_PERF_CAPABILITIES_REGISTER.
899 MSR_CORE2_PERF_CAPABILITIES_REGISTER Msr;
901 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_PERF_CAPABILITIES);
902 AsmWriteMsr64 (MSR_CORE2_PERF_CAPABILITIES, Msr.Uint64);
904 @note MSR_CORE2_PERF_CAPABILITIES is defined as MSR_PERF_CAPABILITIES in SDM.
906 #define MSR_CORE2_PERF_CAPABILITIES 0x00000345
909 MSR information returned for MSR index #MSR_CORE2_PERF_CAPABILITIES
913 /// Individual bit fields
917 /// [Bits 5:0] LBR Format. See Table 35-2.
921 /// [Bit 6] PEBS Record Format.
925 /// [Bit 7] PEBSSaveArchRegs. See Table 35-2.
927 UINT32 PEBS_ARCH_REG
:1;
932 /// All bit fields as a 32-bit value
936 /// All bit fields as a 64-bit value
939 } MSR_CORE2_PERF_CAPABILITIES_REGISTER
;
943 Unique. Fixed-Function-Counter Control Register (R/W).
945 @param ECX MSR_CORE2_PERF_FIXED_CTR_CTRL (0x0000038D)
946 @param EAX Lower 32-bits of MSR value.
947 @param EDX Upper 32-bits of MSR value.
953 Msr = AsmReadMsr64 (MSR_CORE2_PERF_FIXED_CTR_CTRL);
954 AsmWriteMsr64 (MSR_CORE2_PERF_FIXED_CTR_CTRL, Msr);
956 @note MSR_CORE2_PERF_FIXED_CTR_CTRL is defined as MSR_PERF_FIXED_CTR_CTRL in SDM.
958 #define MSR_CORE2_PERF_FIXED_CTR_CTRL 0x0000038D
962 Unique. See Table 35-2. See Section 18.4.2, "Global Counter Control
965 @param ECX MSR_CORE2_IA32_PERF_GLOBAL_STAUS (0x0000038E)
966 @param EAX Lower 32-bits of MSR value.
967 @param EDX Upper 32-bits of MSR value.
973 Msr = AsmReadMsr64 (MSR_CORE2_IA32_PERF_GLOBAL_STAUS);
974 AsmWriteMsr64 (MSR_CORE2_IA32_PERF_GLOBAL_STAUS, Msr);
976 @note MSR_CORE2_IA32_PERF_GLOBAL_STAUS is defined as IA32_PERF_GLOBAL_STAUS in SDM.
978 #define MSR_CORE2_IA32_PERF_GLOBAL_STAUS 0x0000038E
982 Unique. See Section 18.4.2, "Global Counter Control Facilities.".
984 @param ECX MSR_CORE2_PERF_GLOBAL_STAUS (0x0000038E)
985 @param EAX Lower 32-bits of MSR value.
986 @param EDX Upper 32-bits of MSR value.
992 Msr = AsmReadMsr64 (MSR_CORE2_PERF_GLOBAL_STAUS);
993 AsmWriteMsr64 (MSR_CORE2_PERF_GLOBAL_STAUS, Msr);
995 @note MSR_CORE2_PERF_GLOBAL_STAUS is defined as MSR_PERF_GLOBAL_STAUS in SDM.
997 #define MSR_CORE2_PERF_GLOBAL_STAUS 0x0000038E
1001 Unique. See Section 18.4.2, "Global Counter Control Facilities.".
1003 @param ECX MSR_CORE2_PERF_GLOBAL_CTRL (0x0000038F)
1004 @param EAX Lower 32-bits of MSR value.
1005 @param EDX Upper 32-bits of MSR value.
1007 <b>Example usage</b>
1011 Msr = AsmReadMsr64 (MSR_CORE2_PERF_GLOBAL_CTRL);
1012 AsmWriteMsr64 (MSR_CORE2_PERF_GLOBAL_CTRL, Msr);
1014 @note MSR_CORE2_PERF_GLOBAL_CTRL is defined as MSR_PERF_GLOBAL_CTRL in SDM.
1016 #define MSR_CORE2_PERF_GLOBAL_CTRL 0x0000038F
1020 Unique. See Section 18.4.2, "Global Counter Control Facilities.".
1022 @param ECX MSR_CORE2_PERF_GLOBAL_OVF_CTRL (0x00000390)
1023 @param EAX Lower 32-bits of MSR value.
1024 @param EDX Upper 32-bits of MSR value.
1026 <b>Example usage</b>
1030 Msr = AsmReadMsr64 (MSR_CORE2_PERF_GLOBAL_OVF_CTRL);
1031 AsmWriteMsr64 (MSR_CORE2_PERF_GLOBAL_OVF_CTRL, Msr);
1033 @note MSR_CORE2_PERF_GLOBAL_OVF_CTRL is defined as MSR_PERF_GLOBAL_OVF_CTRL in SDM.
1035 #define MSR_CORE2_PERF_GLOBAL_OVF_CTRL 0x00000390
1039 Unique. See Table 35-2. See Section 18.4.4, "Precise Event Based Sampling
1042 @param ECX MSR_CORE2_PEBS_ENABLE (0x000003F1)
1043 @param EAX Lower 32-bits of MSR value.
1044 Described by the type MSR_CORE2_PEBS_ENABLE_REGISTER.
1045 @param EDX Upper 32-bits of MSR value.
1046 Described by the type MSR_CORE2_PEBS_ENABLE_REGISTER.
1048 <b>Example usage</b>
1050 MSR_CORE2_PEBS_ENABLE_REGISTER Msr;
1052 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_PEBS_ENABLE);
1053 AsmWriteMsr64 (MSR_CORE2_PEBS_ENABLE, Msr.Uint64);
1055 @note MSR_CORE2_PEBS_ENABLE is defined as MSR_PEBS_ENABLE in SDM.
1057 #define MSR_CORE2_PEBS_ENABLE 0x000003F1
1060 MSR information returned for MSR index #MSR_CORE2_PEBS_ENABLE
1064 /// Individual bit fields
1068 /// [Bit 0] Enable PEBS on IA32_PMC0. (R/W).
1071 UINT32 Reserved1
:31;
1072 UINT32 Reserved2
:32;
1075 /// All bit fields as a 32-bit value
1079 /// All bit fields as a 64-bit value
1082 } MSR_CORE2_PEBS_ENABLE_REGISTER
;
1086 Unique. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
1088 @param ECX MSR_CORE2_MC4_CTL (0x0000040C)
1089 @param EAX Lower 32-bits of MSR value.
1090 @param EDX Upper 32-bits of MSR value.
1092 <b>Example usage</b>
1096 Msr = AsmReadMsr64 (MSR_CORE2_MC4_CTL);
1097 AsmWriteMsr64 (MSR_CORE2_MC4_CTL, Msr);
1099 @note MSR_CORE2_MC4_CTL is defined as MSR_MC4_CTL in SDM.
1101 #define MSR_CORE2_MC4_CTL 0x0000040C
1105 Unique. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
1107 @param ECX MSR_CORE2_MC4_STATUS (0x0000040D)
1108 @param EAX Lower 32-bits of MSR value.
1109 @param EDX Upper 32-bits of MSR value.
1111 <b>Example usage</b>
1115 Msr = AsmReadMsr64 (MSR_CORE2_MC4_STATUS);
1116 AsmWriteMsr64 (MSR_CORE2_MC4_STATUS, Msr);
1118 @note MSR_CORE2_MC4_STATUS is defined as MSR_MC4_STATUS in SDM.
1120 #define MSR_CORE2_MC4_STATUS 0x0000040D
1124 Unique. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MC4_ADDR
1125 register is either not implemented or contains no address if the ADDRV flag
1126 in the MSR_MC4_STATUS register is clear. When not implemented in the
1127 processor, all reads and writes to this MSR will cause a general-protection
1130 @param ECX MSR_CORE2_MC4_ADDR (0x0000040E)
1131 @param EAX Lower 32-bits of MSR value.
1132 @param EDX Upper 32-bits of MSR value.
1134 <b>Example usage</b>
1138 Msr = AsmReadMsr64 (MSR_CORE2_MC4_ADDR);
1139 AsmWriteMsr64 (MSR_CORE2_MC4_ADDR, Msr);
1141 @note MSR_CORE2_MC4_ADDR is defined as MSR_MC4_ADDR in SDM.
1143 #define MSR_CORE2_MC4_ADDR 0x0000040E
1147 See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".
1149 @param ECX MSR_CORE2_MC3_CTL (0x00000410)
1150 @param EAX Lower 32-bits of MSR value.
1151 @param EDX Upper 32-bits of MSR value.
1153 <b>Example usage</b>
1157 Msr = AsmReadMsr64 (MSR_CORE2_MC3_CTL);
1158 AsmWriteMsr64 (MSR_CORE2_MC3_CTL, Msr);
1160 @note MSR_CORE2_MC3_CTL is defined as MSR_MC3_CTL in SDM.
1162 #define MSR_CORE2_MC3_CTL 0x00000410
1166 See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".
1168 @param ECX MSR_CORE2_MC3_STATUS (0x00000411)
1169 @param EAX Lower 32-bits of MSR value.
1170 @param EDX Upper 32-bits of MSR value.
1172 <b>Example usage</b>
1176 Msr = AsmReadMsr64 (MSR_CORE2_MC3_STATUS);
1177 AsmWriteMsr64 (MSR_CORE2_MC3_STATUS, Msr);
1179 @note MSR_CORE2_MC3_STATUS is defined as MSR_MC3_STATUS in SDM.
1181 #define MSR_CORE2_MC3_STATUS 0x00000411
1185 Unique. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MC3_ADDR
1186 register is either not implemented or contains no address if the ADDRV flag
1187 in the MSR_MC3_STATUS register is clear. When not implemented in the
1188 processor, all reads and writes to this MSR will cause a general-protection
1191 @param ECX MSR_CORE2_MC3_ADDR (0x00000412)
1192 @param EAX Lower 32-bits of MSR value.
1193 @param EDX Upper 32-bits of MSR value.
1195 <b>Example usage</b>
1199 Msr = AsmReadMsr64 (MSR_CORE2_MC3_ADDR);
1200 AsmWriteMsr64 (MSR_CORE2_MC3_ADDR, Msr);
1202 @note MSR_CORE2_MC3_ADDR is defined as MSR_MC3_ADDR in SDM.
1204 #define MSR_CORE2_MC3_ADDR 0x00000412
1210 @param ECX MSR_CORE2_MC3_MISC (0x00000413)
1211 @param EAX Lower 32-bits of MSR value.
1212 @param EDX Upper 32-bits of MSR value.
1214 <b>Example usage</b>
1218 Msr = AsmReadMsr64 (MSR_CORE2_MC3_MISC);
1219 AsmWriteMsr64 (MSR_CORE2_MC3_MISC, Msr);
1221 @note MSR_CORE2_MC3_MISC is defined as MSR_MC3_MISC in SDM.
1223 #define MSR_CORE2_MC3_MISC 0x00000413
1229 @param ECX MSR_CORE2_MC5_CTL (0x00000414)
1230 @param EAX Lower 32-bits of MSR value.
1231 @param EDX Upper 32-bits of MSR value.
1233 <b>Example usage</b>
1237 Msr = AsmReadMsr64 (MSR_CORE2_MC5_CTL);
1238 AsmWriteMsr64 (MSR_CORE2_MC5_CTL, Msr);
1240 @note MSR_CORE2_MC5_CTL is defined as MSR_MC5_CTL in SDM.
1242 #define MSR_CORE2_MC5_CTL 0x00000414
1248 @param ECX MSR_CORE2_MC5_STATUS (0x00000415)
1249 @param EAX Lower 32-bits of MSR value.
1250 @param EDX Upper 32-bits of MSR value.
1252 <b>Example usage</b>
1256 Msr = AsmReadMsr64 (MSR_CORE2_MC5_STATUS);
1257 AsmWriteMsr64 (MSR_CORE2_MC5_STATUS, Msr);
1259 @note MSR_CORE2_MC5_STATUS is defined as MSR_MC5_STATUS in SDM.
1261 #define MSR_CORE2_MC5_STATUS 0x00000415
1267 @param ECX MSR_CORE2_MC5_ADDR (0x00000416)
1268 @param EAX Lower 32-bits of MSR value.
1269 @param EDX Upper 32-bits of MSR value.
1271 <b>Example usage</b>
1275 Msr = AsmReadMsr64 (MSR_CORE2_MC5_ADDR);
1276 AsmWriteMsr64 (MSR_CORE2_MC5_ADDR, Msr);
1278 @note MSR_CORE2_MC5_ADDR is defined as MSR_MC5_ADDR in SDM.
1280 #define MSR_CORE2_MC5_ADDR 0x00000416
1286 @param ECX MSR_CORE2_MC5_MISC (0x00000417)
1287 @param EAX Lower 32-bits of MSR value.
1288 @param EDX Upper 32-bits of MSR value.
1290 <b>Example usage</b>
1294 Msr = AsmReadMsr64 (MSR_CORE2_MC5_MISC);
1295 AsmWriteMsr64 (MSR_CORE2_MC5_MISC, Msr);
1297 @note MSR_CORE2_MC5_MISC is defined as MSR_MC5_MISC in SDM.
1299 #define MSR_CORE2_MC5_MISC 0x00000417
1303 Unique. Apply to Intel Xeon processor 7400 series (processor signature
1304 06_1D) only. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS." and Chapter 23.
1306 @param ECX MSR_CORE2_MC6_STATUS (0x00000419)
1307 @param EAX Lower 32-bits of MSR value.
1308 @param EDX Upper 32-bits of MSR value.
1310 <b>Example usage</b>
1314 Msr = AsmReadMsr64 (MSR_CORE2_MC6_STATUS);
1315 AsmWriteMsr64 (MSR_CORE2_MC6_STATUS, Msr);
1317 @note MSR_CORE2_MC6_STATUS is defined as MSR_MC6_STATUS in SDM.
1319 #define MSR_CORE2_MC6_STATUS 0x00000419
1323 Unique. GBUSQ Event Control/Counter Register (R/W) Apply to Intel Xeon
1324 processor 7400 series (processor signature 06_1D) only. See Section 17.2.2.
1326 @param ECX MSR_CORE2_EMON_L3_CTR_CTLn
1327 @param EAX Lower 32-bits of MSR value.
1328 @param EDX Upper 32-bits of MSR value.
1330 <b>Example usage</b>
1334 Msr = AsmReadMsr64 (MSR_CORE2_EMON_L3_CTR_CTL0);
1335 AsmWriteMsr64 (MSR_CORE2_EMON_L3_CTR_CTL0, Msr);
1337 @note MSR_CORE2_EMON_L3_CTR_CTL0 is defined as MSR_EMON_L3_CTR_CTL0 in SDM.
1338 MSR_CORE2_EMON_L3_CTR_CTL1 is defined as MSR_EMON_L3_CTR_CTL1 in SDM.
1339 MSR_CORE2_EMON_L3_CTR_CTL2 is defined as MSR_EMON_L3_CTR_CTL2 in SDM.
1340 MSR_CORE2_EMON_L3_CTR_CTL3 is defined as MSR_EMON_L3_CTR_CTL3 in SDM.
1341 MSR_CORE2_EMON_L3_CTR_CTL4 is defined as MSR_EMON_L3_CTR_CTL4 in SDM.
1342 MSR_CORE2_EMON_L3_CTR_CTL5 is defined as MSR_EMON_L3_CTR_CTL5 in SDM.
1343 MSR_CORE2_EMON_L3_CTR_CTL6 is defined as MSR_EMON_L3_CTR_CTL6 in SDM.
1344 MSR_CORE2_EMON_L3_CTR_CTL7 is defined as MSR_EMON_L3_CTR_CTL7 in SDM.
1347 #define MSR_CORE2_EMON_L3_CTR_CTL0 0x000107CC
1348 #define MSR_CORE2_EMON_L3_CTR_CTL1 0x000107CD
1349 #define MSR_CORE2_EMON_L3_CTR_CTL2 0x000107CE
1350 #define MSR_CORE2_EMON_L3_CTR_CTL3 0x000107CF
1351 #define MSR_CORE2_EMON_L3_CTR_CTL4 0x000107D0
1352 #define MSR_CORE2_EMON_L3_CTR_CTL5 0x000107D1
1353 #define MSR_CORE2_EMON_L3_CTR_CTL6 0x000107D2
1354 #define MSR_CORE2_EMON_L3_CTR_CTL7 0x000107D3
1359 Unique. L3/FSB Common Control Register (R/W) Apply to Intel Xeon processor
1360 7400 series (processor signature 06_1D) only. See Section 17.2.2.
1362 @param ECX MSR_CORE2_EMON_L3_GL_CTL (0x000107D8)
1363 @param EAX Lower 32-bits of MSR value.
1364 @param EDX Upper 32-bits of MSR value.
1366 <b>Example usage</b>
1370 Msr = AsmReadMsr64 (MSR_CORE2_EMON_L3_GL_CTL);
1371 AsmWriteMsr64 (MSR_CORE2_EMON_L3_GL_CTL, Msr);
1373 @note MSR_CORE2_EMON_L3_GL_CTL is defined as MSR_EMON_L3_GL_CTL in SDM.
1375 #define MSR_CORE2_EMON_L3_GL_CTL 0x000107D8