2 MSR Definitions for P6 Family Processors.
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 - 2018, Intel Corporation. All rights reserved.<BR>
10 SPDX-License-Identifier: BSD-2-Clause-Patent
12 @par Specification Reference:
13 Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 4,
14 May 2018, Volume 4: Model-Specific-Registers (MSR)
21 #include <Register/ArchitecturalMsr.h>
24 Is P6 Family Processors?
26 @param DisplayFamily Display Family ID
27 @param DisplayModel Display Model ID
29 @retval TRUE Yes, it is.
30 @retval FALSE No, it isn't.
32 #define IS_P6_PROCESSOR(DisplayFamily, DisplayModel) \
33 (DisplayFamily == 0x06 && \
35 DisplayModel == 0x03 || \
36 DisplayModel == 0x05 || \
37 DisplayModel == 0x07 || \
38 DisplayModel == 0x08 || \
39 DisplayModel == 0x0A || \
40 DisplayModel == 0x0B \
45 See Section 2.22, "MSRs in Pentium Processors.".
47 @param ECX MSR_P6_P5_MC_ADDR (0x00000000)
48 @param EAX Lower 32-bits of MSR value.
49 @param EDX Upper 32-bits of MSR value.
55 Msr = AsmReadMsr64 (MSR_P6_P5_MC_ADDR);
56 AsmWriteMsr64 (MSR_P6_P5_MC_ADDR, Msr);
58 @note MSR_P6_P5_MC_ADDR is defined as P5_MC_ADDR in SDM.
60 #define MSR_P6_P5_MC_ADDR 0x00000000
64 See Section 2.22, "MSRs in Pentium Processors.".
66 @param ECX MSR_P6_P5_MC_TYPE (0x00000001)
67 @param EAX Lower 32-bits of MSR value.
68 @param EDX Upper 32-bits of MSR value.
74 Msr = AsmReadMsr64 (MSR_P6_P5_MC_TYPE);
75 AsmWriteMsr64 (MSR_P6_P5_MC_TYPE, Msr);
77 @note MSR_P6_P5_MC_TYPE is defined as P5_MC_TYPE in SDM.
79 #define MSR_P6_P5_MC_TYPE 0x00000001
83 See Section 17.17, "Time-Stamp Counter.".
85 @param ECX MSR_P6_TSC (0x00000010)
86 @param EAX Lower 32-bits of MSR value.
87 @param EDX Upper 32-bits of MSR value.
93 Msr = AsmReadMsr64 (MSR_P6_TSC);
94 AsmWriteMsr64 (MSR_P6_TSC, Msr);
96 @note MSR_P6_TSC is defined as TSC in SDM.
98 #define MSR_P6_TSC 0x00000010
102 Platform ID (R) The operating system can use this MSR to determine "slot"
103 information for the processor and the proper microcode update to load.
105 @param ECX MSR_P6_IA32_PLATFORM_ID (0x00000017)
106 @param EAX Lower 32-bits of MSR value.
107 Described by the type MSR_P6_IA32_PLATFORM_ID_REGISTER.
108 @param EDX Upper 32-bits of MSR value.
109 Described by the type MSR_P6_IA32_PLATFORM_ID_REGISTER.
113 MSR_P6_IA32_PLATFORM_ID_REGISTER Msr;
115 Msr.Uint64 = AsmReadMsr64 (MSR_P6_IA32_PLATFORM_ID);
117 @note MSR_P6_IA32_PLATFORM_ID is defined as IA32_PLATFORM_ID in SDM.
119 #define MSR_P6_IA32_PLATFORM_ID 0x00000017
122 MSR information returned for MSR index #MSR_P6_IA32_PLATFORM_ID
126 /// Individual bit fields
132 /// [Bits 52:50] Platform Id (R) Contains information concerning the
133 /// intended platform for the processor.
136 /// 0 0 0 Processor Flag 0.
137 /// 0 0 1 Processor Flag 1
138 /// 0 1 0 Processor Flag 2
139 /// 0 1 1 Processor Flag 3
140 /// 1 0 0 Processor Flag 4
141 /// 1 0 1 Processor Flag 5
142 /// 1 1 0 Processor Flag 6
143 /// 1 1 1 Processor Flag 7
147 /// [Bits 56:53] L2 Cache Latency Read.
149 UINT32 L2CacheLatencyRead
:4;
152 /// [Bit 60] Clock Frequency Ratio Read.
154 UINT32 ClockFrequencyRatioRead
:1;
158 /// All bit fields as a 64-bit value
161 } MSR_P6_IA32_PLATFORM_ID_REGISTER
;
165 Section 10.4.4, "Local APIC Status and Location.".
167 @param ECX MSR_P6_APIC_BASE (0x0000001B)
168 @param EAX Lower 32-bits of MSR value.
169 Described by the type MSR_P6_APIC_BASE_REGISTER.
170 @param EDX Upper 32-bits of MSR value.
171 Described by the type MSR_P6_APIC_BASE_REGISTER.
175 MSR_P6_APIC_BASE_REGISTER Msr;
177 Msr.Uint64 = AsmReadMsr64 (MSR_P6_APIC_BASE);
178 AsmWriteMsr64 (MSR_P6_APIC_BASE, Msr.Uint64);
180 @note MSR_P6_APIC_BASE is defined as APIC_BASE in SDM.
182 #define MSR_P6_APIC_BASE 0x0000001B
185 MSR information returned for MSR index #MSR_P6_APIC_BASE
189 /// Individual bit fields
194 /// [Bit 8] Boot Strap Processor indicator Bit 1 = BSP.
199 /// [Bit 11] APIC Global Enable Bit - Permanent till reset 1 = Enabled 0 =
204 /// [Bits 31:12] APIC Base Address.
210 /// All bit fields as a 32-bit value
214 /// All bit fields as a 64-bit value
217 } MSR_P6_APIC_BASE_REGISTER
;
221 Processor Hard Power-On Configuration (R/W) Enables and disables processor
222 features; (R) indicates current processor configuration.
224 @param ECX MSR_P6_EBL_CR_POWERON (0x0000002A)
225 @param EAX Lower 32-bits of MSR value.
226 Described by the type MSR_P6_EBL_CR_POWERON_REGISTER.
227 @param EDX Upper 32-bits of MSR value.
228 Described by the type MSR_P6_EBL_CR_POWERON_REGISTER.
232 MSR_P6_EBL_CR_POWERON_REGISTER Msr;
234 Msr.Uint64 = AsmReadMsr64 (MSR_P6_EBL_CR_POWERON);
235 AsmWriteMsr64 (MSR_P6_EBL_CR_POWERON, Msr.Uint64);
237 @note MSR_P6_EBL_CR_POWERON is defined as EBL_CR_POWERON in SDM.
239 #define MSR_P6_EBL_CR_POWERON 0x0000002A
242 MSR information returned for MSR index #MSR_P6_EBL_CR_POWERON
246 /// Individual bit fields
251 /// [Bit 1] Data Error Checking Enable (R/W) 1 = Enabled 0 = Disabled.
253 UINT32 DataErrorCheckingEnable
:1;
255 /// [Bit 2] Response Error Checking Enable FRCERR Observation Enable (R/W)
256 /// 1 = Enabled 0 = Disabled.
258 UINT32 ResponseErrorCheckingEnable
:1;
260 /// [Bit 3] AERR# Drive Enable (R/W) 1 = Enabled 0 = Disabled.
262 UINT32 AERR_DriveEnable
:1;
264 /// [Bit 4] BERR# Enable for Initiator Bus Requests (R/W) 1 = Enabled 0 =
267 UINT32 BERR_Enable
:1;
270 /// [Bit 6] BERR# Driver Enable for Initiator Internal Errors (R/W) 1 =
271 /// Enabled 0 = Disabled.
273 UINT32 BERR_DriverEnable
:1;
275 /// [Bit 7] BINIT# Driver Enable (R/W) 1 = Enabled 0 = Disabled.
277 UINT32 BINIT_DriverEnable
:1;
279 /// [Bit 8] Output Tri-state Enabled (R) 1 = Enabled 0 = Disabled.
281 UINT32 OutputTriStateEnable
:1;
283 /// [Bit 9] Execute BIST (R) 1 = Enabled 0 = Disabled.
285 UINT32 ExecuteBIST
:1;
287 /// [Bit 10] AERR# Observation Enabled (R) 1 = Enabled 0 = Disabled.
289 UINT32 AERR_ObservationEnabled
:1;
292 /// [Bit 12] BINIT# Observation Enabled (R) 1 = Enabled 0 = Disabled.
294 UINT32 BINIT_ObservationEnabled
:1;
296 /// [Bit 13] In Order Queue Depth (R) 1 = 1 0 = 8.
298 UINT32 InOrderQueueDepth
:1;
300 /// [Bit 14] 1-MByte Power on Reset Vector (R) 1 = 1MByte 0 = 4GBytes.
302 UINT32 ResetVector
:1;
304 /// [Bit 15] FRC Mode Enable (R) 1 = Enabled 0 = Disabled.
306 UINT32 FRCModeEnable
:1;
308 /// [Bits 17:16] APIC Cluster ID (R).
310 UINT32 APICClusterID
:2;
312 /// [Bits 19:18] System Bus Frequency (R) 00 = 66MHz 10 = 100Mhz 01 =
313 /// 133MHz 11 = Reserved.
315 UINT32 SystemBusFrequency
:2;
317 /// [Bits 21:20] Symmetric Arbitration ID (R).
319 UINT32 SymmetricArbitrationID
:2;
321 /// [Bits 25:22] Clock Frequency Ratio (R).
323 UINT32 ClockFrequencyRatio
:4;
325 /// [Bit 26] Low Power Mode Enable (R/W).
327 UINT32 LowPowerModeEnable
:1;
329 /// [Bit 27] Clock Frequency Ratio.
331 UINT32 ClockFrequencyRatio1
:1;
336 /// All bit fields as a 32-bit value
340 /// All bit fields as a 64-bit value
343 } MSR_P6_EBL_CR_POWERON_REGISTER
;
347 Test Control Register.
349 @param ECX MSR_P6_TEST_CTL (0x00000033)
350 @param EAX Lower 32-bits of MSR value.
351 Described by the type MSR_P6_TEST_CTL_REGISTER.
352 @param EDX Upper 32-bits of MSR value.
353 Described by the type MSR_P6_TEST_CTL_REGISTER.
357 MSR_P6_TEST_CTL_REGISTER Msr;
359 Msr.Uint64 = AsmReadMsr64 (MSR_P6_TEST_CTL);
360 AsmWriteMsr64 (MSR_P6_TEST_CTL, Msr.Uint64);
362 @note MSR_P6_TEST_CTL is defined as TEST_CTL in SDM.
364 #define MSR_P6_TEST_CTL 0x00000033
367 MSR information returned for MSR index #MSR_P6_TEST_CTL
371 /// Individual bit fields
376 /// [Bit 30] Streaming Buffer Disable.
378 UINT32 StreamingBufferDisable
:1;
380 /// [Bit 31] Disable LOCK# Assertion for split locked access.
382 UINT32 Disable_LOCK
:1;
386 /// All bit fields as a 32-bit value
390 /// All bit fields as a 64-bit value
393 } MSR_P6_TEST_CTL_REGISTER
;
397 BIOS Update Trigger Register.
399 @param ECX MSR_P6_BIOS_UPDT_TRIG (0x00000079)
400 @param EAX Lower 32-bits of MSR value.
401 @param EDX Upper 32-bits of MSR value.
407 Msr = AsmReadMsr64 (MSR_P6_BIOS_UPDT_TRIG);
408 AsmWriteMsr64 (MSR_P6_BIOS_UPDT_TRIG, Msr);
410 @note MSR_P6_BIOS_UPDT_TRIG is defined as BIOS_UPDT_TRIG in SDM.
412 #define MSR_P6_BIOS_UPDT_TRIG 0x00000079
416 Chunk n data register D[63:0]: used to write to and read from the L2.
418 @param ECX MSR_P6_BBL_CR_Dn
419 @param EAX Lower 32-bits of MSR value.
420 @param EDX Upper 32-bits of MSR value.
426 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_D0);
427 AsmWriteMsr64 (MSR_P6_BBL_CR_D0, Msr);
429 @note MSR_P6_BBL_CR_D0 is defined as BBL_CR_D0 in SDM.
430 MSR_P6_BBL_CR_D1 is defined as BBL_CR_D1 in SDM.
431 MSR_P6_BBL_CR_D2 is defined as BBL_CR_D2 in SDM.
434 #define MSR_P6_BBL_CR_D0 0x00000088
435 #define MSR_P6_BBL_CR_D1 0x00000089
436 #define MSR_P6_BBL_CR_D2 0x0000008A
441 BIOS Update Signature Register or Chunk 3 data register D[63:0] Used to
442 write to and read from the L2 depending on the usage model.
444 @param ECX MSR_P6_BIOS_SIGN (0x0000008B)
445 @param EAX Lower 32-bits of MSR value.
446 @param EDX Upper 32-bits of MSR value.
452 Msr = AsmReadMsr64 (MSR_P6_BIOS_SIGN);
453 AsmWriteMsr64 (MSR_P6_BIOS_SIGN, Msr);
455 @note MSR_P6_BIOS_SIGN is defined as BIOS_SIGN in SDM.
457 #define MSR_P6_BIOS_SIGN 0x0000008B
463 @param ECX MSR_P6_PERFCTR0 (0x000000C1)
464 @param EAX Lower 32-bits of MSR value.
465 @param EDX Upper 32-bits of MSR value.
471 Msr = AsmReadMsr64 (MSR_P6_PERFCTR0);
472 AsmWriteMsr64 (MSR_P6_PERFCTR0, Msr);
474 @note MSR_P6_PERFCTR0 is defined as PERFCTR0 in SDM.
475 MSR_P6_PERFCTR1 is defined as PERFCTR1 in SDM.
478 #define MSR_P6_PERFCTR0 0x000000C1
479 #define MSR_P6_PERFCTR1 0x000000C2
486 @param ECX MSR_P6_MTRRCAP (0x000000FE)
487 @param EAX Lower 32-bits of MSR value.
488 @param EDX Upper 32-bits of MSR value.
494 Msr = AsmReadMsr64 (MSR_P6_MTRRCAP);
495 AsmWriteMsr64 (MSR_P6_MTRRCAP, Msr);
497 @note MSR_P6_MTRRCAP is defined as MTRRCAP in SDM.
499 #define MSR_P6_MTRRCAP 0x000000FE
503 Address register: used to send specified address (A31-A3) to L2 during cache
504 initialization accesses.
506 @param ECX MSR_P6_BBL_CR_ADDR (0x00000116)
507 @param EAX Lower 32-bits of MSR value.
508 Described by the type MSR_P6_BBL_CR_ADDR_REGISTER.
509 @param EDX Upper 32-bits of MSR value.
510 Described by the type MSR_P6_BBL_CR_ADDR_REGISTER.
514 MSR_P6_BBL_CR_ADDR_REGISTER Msr;
516 Msr.Uint64 = AsmReadMsr64 (MSR_P6_BBL_CR_ADDR);
517 AsmWriteMsr64 (MSR_P6_BBL_CR_ADDR, Msr.Uint64);
519 @note MSR_P6_BBL_CR_ADDR is defined as BBL_CR_ADDR in SDM.
521 #define MSR_P6_BBL_CR_ADDR 0x00000116
524 MSR information returned for MSR index #MSR_P6_BBL_CR_ADDR
528 /// Individual bit fields
533 /// [Bits 31:3] Address bits
539 /// All bit fields as a 32-bit value
543 /// All bit fields as a 64-bit value
546 } MSR_P6_BBL_CR_ADDR_REGISTER
;
550 Data ECC register D[7:0]: used to write ECC and read ECC to/from L2.
552 @param ECX MSR_P6_BBL_CR_DECC (0x00000118)
553 @param EAX Lower 32-bits of MSR value.
554 @param EDX Upper 32-bits of MSR value.
560 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_DECC);
561 AsmWriteMsr64 (MSR_P6_BBL_CR_DECC, Msr);
563 @note MSR_P6_BBL_CR_DECC is defined as BBL_CR_DECC in SDM.
565 #define MSR_P6_BBL_CR_DECC 0x00000118
569 Control register: used to program L2 commands to be issued via cache
570 configuration accesses mechanism. Also receives L2 lookup response.
572 @param ECX MSR_P6_BBL_CR_CTL (0x00000119)
573 @param EAX Lower 32-bits of MSR value.
574 Described by the type MSR_P6_BBL_CR_CTL_REGISTER.
575 @param EDX Upper 32-bits of MSR value.
576 Described by the type MSR_P6_BBL_CR_CTL_REGISTER.
580 MSR_P6_BBL_CR_CTL_REGISTER Msr;
582 Msr.Uint64 = AsmReadMsr64 (MSR_P6_BBL_CR_CTL);
583 AsmWriteMsr64 (MSR_P6_BBL_CR_CTL, Msr.Uint64);
585 @note MSR_P6_BBL_CR_CTL is defined as BBL_CR_CTL in SDM.
587 #define MSR_P6_BBL_CR_CTL 0x00000119
590 MSR information returned for MSR index #MSR_P6_BBL_CR_CTL
594 /// Individual bit fields
598 /// [Bits 4:0] L2 Command
599 /// Data Read w/ LRU update (RLU)
600 /// Tag Read w/ Data Read (TRR)
602 /// L2 Control Register Read (CR)
603 /// L2 Control Register Write (CW)
604 /// Tag Write w/ Data Read (TWR)
605 /// Tag Write w/ Data Write (TWW)
610 /// [Bits 6:5] State to L2
615 /// [Bits 9:8] Way to L2.
619 /// [Bits 11:10] Way 0 - 00, Way 1 - 01, Way 2 - 10, Way 3 - 11.
623 /// [Bits 13:12] Modified - 11,Exclusive - 10, Shared - 01, Invalid - 00.
627 /// [Bits 15:14] State from L2.
629 UINT32 StateFromL2
:2;
637 /// [Bits 20:19] User supplied ECC.
641 /// [Bit 21] Processor number Disable = 1 Enable = 0 Reserved.
643 UINT32 ProcessorNumber
:1;
648 /// All bit fields as a 32-bit value
652 /// All bit fields as a 64-bit value
655 } MSR_P6_BBL_CR_CTL_REGISTER
;
659 Trigger register: used to initiate a cache configuration accesses access,
660 Write only with Data = 0.
662 @param ECX MSR_P6_BBL_CR_TRIG (0x0000011A)
663 @param EAX Lower 32-bits of MSR value.
664 @param EDX Upper 32-bits of MSR value.
670 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_TRIG);
671 AsmWriteMsr64 (MSR_P6_BBL_CR_TRIG, Msr);
673 @note MSR_P6_BBL_CR_TRIG is defined as BBL_CR_TRIG in SDM.
675 #define MSR_P6_BBL_CR_TRIG 0x0000011A
679 Busy register: indicates when a cache configuration accesses L2 command is
680 in progress. D[0] = 1 = BUSY.
682 @param ECX MSR_P6_BBL_CR_BUSY (0x0000011B)
683 @param EAX Lower 32-bits of MSR value.
684 @param EDX Upper 32-bits of MSR value.
690 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_BUSY);
691 AsmWriteMsr64 (MSR_P6_BBL_CR_BUSY, Msr);
693 @note MSR_P6_BBL_CR_BUSY is defined as BBL_CR_BUSY in SDM.
695 #define MSR_P6_BBL_CR_BUSY 0x0000011B
699 Control register 3: used to configure the L2 Cache.
701 @param ECX MSR_P6_BBL_CR_CTL3 (0x0000011E)
702 @param EAX Lower 32-bits of MSR value.
703 Described by the type MSR_P6_BBL_CR_CTL3_REGISTER.
704 @param EDX Upper 32-bits of MSR value.
705 Described by the type MSR_P6_BBL_CR_CTL3_REGISTER.
709 MSR_P6_BBL_CR_CTL3_REGISTER Msr;
711 Msr.Uint64 = AsmReadMsr64 (MSR_P6_BBL_CR_CTL3);
712 AsmWriteMsr64 (MSR_P6_BBL_CR_CTL3, Msr.Uint64);
714 @note MSR_P6_BBL_CR_CTL3 is defined as BBL_CR_CTL3 in SDM.
716 #define MSR_P6_BBL_CR_CTL3 0x0000011E
719 MSR information returned for MSR index #MSR_P6_BBL_CR_CTL3
723 /// Individual bit fields
727 /// [Bit 0] L2 Configured (read/write ).
729 UINT32 L2Configured
:1;
731 /// [Bits 4:1] L2 Cache Latency (read/write).
733 UINT32 L2CacheLatency
:4;
735 /// [Bit 5] ECC Check Enable (read/write).
737 UINT32 ECCCheckEnable
:1;
739 /// [Bit 6] Address Parity Check Enable (read/write).
741 UINT32 AddressParityCheckEnable
:1;
743 /// [Bit 7] CRTN Parity Check Enable (read/write).
745 UINT32 CRTNParityCheckEnable
:1;
747 /// [Bit 8] L2 Enabled (read/write).
751 /// [Bits 10:9] L2 Associativity (read only) Direct Mapped 2 Way 4 Way
754 UINT32 L2Associativity
:2;
756 /// [Bits 12:11] Number of L2 banks (read only).
760 /// [Bits 17:13] Cache size per bank (read/write) 256KBytes 512KBytes
761 /// 1MByte 2MByte 4MBytes.
763 UINT32 CacheSizePerBank
:5;
765 /// [Bit 18] Cache State error checking enable (read/write).
767 UINT32 CacheStateErrorEnable
:1;
770 /// [Bits 22:20] L2 Physical Address Range support 64GBytes 32GBytes
771 /// 16GBytes 8GBytes 4GBytes 2GBytes 1GBytes 512MBytes.
773 UINT32 L2AddressRange
:3;
775 /// [Bit 23] L2 Hardware Disable (read only).
777 UINT32 L2HardwareDisable
:1;
780 /// [Bit 25] Cache bus fraction (read only).
782 UINT32 CacheBusFraction
:1;
787 /// All bit fields as a 32-bit value
791 /// All bit fields as a 64-bit value
794 } MSR_P6_BBL_CR_CTL3_REGISTER
;
798 CS register target for CPL 0 code.
800 @param ECX MSR_P6_SYSENTER_CS_MSR (0x00000174)
801 @param EAX Lower 32-bits of MSR value.
802 @param EDX Upper 32-bits of MSR value.
808 Msr = AsmReadMsr64 (MSR_P6_SYSENTER_CS_MSR);
809 AsmWriteMsr64 (MSR_P6_SYSENTER_CS_MSR, Msr);
811 @note MSR_P6_SYSENTER_CS_MSR is defined as SYSENTER_CS_MSR in SDM.
813 #define MSR_P6_SYSENTER_CS_MSR 0x00000174
817 Stack pointer for CPL 0 stack.
819 @param ECX MSR_P6_SYSENTER_ESP_MSR (0x00000175)
820 @param EAX Lower 32-bits of MSR value.
821 @param EDX Upper 32-bits of MSR value.
827 Msr = AsmReadMsr64 (MSR_P6_SYSENTER_ESP_MSR);
828 AsmWriteMsr64 (MSR_P6_SYSENTER_ESP_MSR, Msr);
830 @note MSR_P6_SYSENTER_ESP_MSR is defined as SYSENTER_ESP_MSR in SDM.
832 #define MSR_P6_SYSENTER_ESP_MSR 0x00000175
836 CPL 0 code entry point.
838 @param ECX MSR_P6_SYSENTER_EIP_MSR (0x00000176)
839 @param EAX Lower 32-bits of MSR value.
840 @param EDX Upper 32-bits of MSR value.
846 Msr = AsmReadMsr64 (MSR_P6_SYSENTER_EIP_MSR);
847 AsmWriteMsr64 (MSR_P6_SYSENTER_EIP_MSR, Msr);
849 @note MSR_P6_SYSENTER_EIP_MSR is defined as SYSENTER_EIP_MSR in SDM.
851 #define MSR_P6_SYSENTER_EIP_MSR 0x00000176
857 @param ECX MSR_P6_MCG_CAP (0x00000179)
858 @param EAX Lower 32-bits of MSR value.
859 @param EDX Upper 32-bits of MSR value.
865 Msr = AsmReadMsr64 (MSR_P6_MCG_CAP);
866 AsmWriteMsr64 (MSR_P6_MCG_CAP, Msr);
868 @note MSR_P6_MCG_CAP is defined as MCG_CAP in SDM.
870 #define MSR_P6_MCG_CAP 0x00000179
876 @param ECX MSR_P6_MCG_STATUS (0x0000017A)
877 @param EAX Lower 32-bits of MSR value.
878 @param EDX Upper 32-bits of MSR value.
884 Msr = AsmReadMsr64 (MSR_P6_MCG_STATUS);
885 AsmWriteMsr64 (MSR_P6_MCG_STATUS, Msr);
887 @note MSR_P6_MCG_STATUS is defined as MCG_STATUS in SDM.
889 #define MSR_P6_MCG_STATUS 0x0000017A
895 @param ECX MSR_P6_MCG_CTL (0x0000017B)
896 @param EAX Lower 32-bits of MSR value.
897 @param EDX Upper 32-bits of MSR value.
903 Msr = AsmReadMsr64 (MSR_P6_MCG_CTL);
904 AsmWriteMsr64 (MSR_P6_MCG_CTL, Msr);
906 @note MSR_P6_MCG_CTL is defined as MCG_CTL in SDM.
908 #define MSR_P6_MCG_CTL 0x0000017B
914 @param ECX MSR_P6_PERFEVTSELn
915 @param EAX Lower 32-bits of MSR value.
916 Described by the type MSR_P6_PERFEVTSEL_REGISTER.
917 @param EDX Upper 32-bits of MSR value.
918 Described by the type MSR_P6_PERFEVTSEL_REGISTER.
922 MSR_P6_PERFEVTSEL_REGISTER Msr;
924 Msr.Uint64 = AsmReadMsr64 (MSR_P6_PERFEVTSEL0);
925 AsmWriteMsr64 (MSR_P6_PERFEVTSEL0, Msr.Uint64);
927 @note MSR_P6_PERFEVTSEL0 is defined as PERFEVTSEL0 in SDM.
928 MSR_P6_PERFEVTSEL1 is defined as PERFEVTSEL1 in SDM.
931 #define MSR_P6_PERFEVTSEL0 0x00000186
932 #define MSR_P6_PERFEVTSEL1 0x00000187
936 MSR information returned for MSR indexes #MSR_P6_PERFEVTSEL0 and
941 /// Individual bit fields
945 /// [Bits 7:0] Event Select Refer to Performance Counter section for a
946 /// list of event encodings.
948 UINT32 EventSelect
:8;
950 /// [Bits 15:8] UMASK (Unit Mask) Unit mask register set to 0 to enable
951 /// all count options.
955 /// [Bit 16] USER Controls the counting of events at Privilege levels of
960 /// [Bit 17] OS Controls the counting of events at Privilege level of 0.
964 /// [Bit 18] E Occurrence/Duration Mode Select 1 = Occurrence 0 = Duration.
968 /// [Bit 19] PC Enabled the signaling of performance counter overflow via
973 /// [Bit 20] INT Enables the signaling of counter overflow via input to
974 /// APIC 1 = Enable 0 = Disable.
979 /// [Bit 22] ENABLE Enables the counting of performance events in both
980 /// counters 1 = Enable 0 = Disable.
984 /// [Bit 23] INV Inverts the result of the CMASK condition 1 = Inverted 0
989 /// [Bits 31:24] CMASK (Counter Mask).
995 /// All bit fields as a 32-bit value
999 /// All bit fields as a 64-bit value
1002 } MSR_P6_PERFEVTSEL_REGISTER
;
1008 @param ECX MSR_P6_DEBUGCTLMSR (0x000001D9)
1009 @param EAX Lower 32-bits of MSR value.
1010 Described by the type MSR_P6_DEBUGCTLMSR_REGISTER.
1011 @param EDX Upper 32-bits of MSR value.
1012 Described by the type MSR_P6_DEBUGCTLMSR_REGISTER.
1014 <b>Example usage</b>
1016 MSR_P6_DEBUGCTLMSR_REGISTER Msr;
1018 Msr.Uint64 = AsmReadMsr64 (MSR_P6_DEBUGCTLMSR);
1019 AsmWriteMsr64 (MSR_P6_DEBUGCTLMSR, Msr.Uint64);
1021 @note MSR_P6_DEBUGCTLMSR is defined as DEBUGCTLMSR in SDM.
1023 #define MSR_P6_DEBUGCTLMSR 0x000001D9
1026 MSR information returned for MSR index #MSR_P6_DEBUGCTLMSR
1030 /// Individual bit fields
1034 /// [Bit 0] Enable/Disable Last Branch Records.
1038 /// [Bit 1] Branch Trap Flag.
1042 /// [Bit 2] Performance Monitoring/Break Point Pins.
1046 /// [Bit 3] Performance Monitoring/Break Point Pins.
1050 /// [Bit 4] Performance Monitoring/Break Point Pins.
1054 /// [Bit 5] Performance Monitoring/Break Point Pins.
1058 /// [Bit 6] Enable/Disable Execution Trace Messages.
1061 UINT32 Reserved1
:25;
1062 UINT32 Reserved2
:32;
1065 /// All bit fields as a 32-bit value
1069 /// All bit fields as a 64-bit value
1072 } MSR_P6_DEBUGCTLMSR_REGISTER
;
1078 @param ECX MSR_P6_LASTBRANCHFROMIP (0x000001DB)
1079 @param EAX Lower 32-bits of MSR value.
1080 @param EDX Upper 32-bits of MSR value.
1082 <b>Example usage</b>
1086 Msr = AsmReadMsr64 (MSR_P6_LASTBRANCHFROMIP);
1087 AsmWriteMsr64 (MSR_P6_LASTBRANCHFROMIP, Msr);
1089 @note MSR_P6_LASTBRANCHFROMIP is defined as LASTBRANCHFROMIP in SDM.
1091 #define MSR_P6_LASTBRANCHFROMIP 0x000001DB
1097 @param ECX MSR_P6_LASTBRANCHTOIP (0x000001DC)
1098 @param EAX Lower 32-bits of MSR value.
1099 @param EDX Upper 32-bits of MSR value.
1101 <b>Example usage</b>
1105 Msr = AsmReadMsr64 (MSR_P6_LASTBRANCHTOIP);
1106 AsmWriteMsr64 (MSR_P6_LASTBRANCHTOIP, Msr);
1108 @note MSR_P6_LASTBRANCHTOIP is defined as LASTBRANCHTOIP in SDM.
1110 #define MSR_P6_LASTBRANCHTOIP 0x000001DC
1116 @param ECX MSR_P6_LASTINTFROMIP (0x000001DD)
1117 @param EAX Lower 32-bits of MSR value.
1118 @param EDX Upper 32-bits of MSR value.
1120 <b>Example usage</b>
1124 Msr = AsmReadMsr64 (MSR_P6_LASTINTFROMIP);
1125 AsmWriteMsr64 (MSR_P6_LASTINTFROMIP, Msr);
1127 @note MSR_P6_LASTINTFROMIP is defined as LASTINTFROMIP in SDM.
1129 #define MSR_P6_LASTINTFROMIP 0x000001DD
1135 @param ECX MSR_P6_LASTINTTOIP (0x000001DE)
1136 @param EAX Lower 32-bits of MSR value.
1137 @param EDX Upper 32-bits of MSR value.
1139 <b>Example usage</b>
1143 Msr = AsmReadMsr64 (MSR_P6_LASTINTTOIP);
1144 AsmWriteMsr64 (MSR_P6_LASTINTTOIP, Msr);
1146 @note MSR_P6_LASTINTTOIP is defined as LASTINTTOIP in SDM.
1148 #define MSR_P6_LASTINTTOIP 0x000001DE
1153 @param ECX MSR_P6_MTRRPHYSBASEn
1154 @param EAX Lower 32-bits of MSR value.
1155 @param EDX Upper 32-bits of MSR value.
1157 <b>Example usage</b>
1161 Msr = AsmReadMsr64 (MSR_P6_MTRRPHYSBASE0);
1162 AsmWriteMsr64 (MSR_P6_MTRRPHYSBASE0, Msr);
1164 @note MSR_P6_MTRRPHYSBASE0 is defined as MTRRPHYSBASE0 in SDM.
1165 MSR_P6_MTRRPHYSBASE1 is defined as MTRRPHYSBASE1 in SDM.
1166 MSR_P6_MTRRPHYSBASE2 is defined as MTRRPHYSBASE2 in SDM.
1167 MSR_P6_MTRRPHYSBASE3 is defined as MTRRPHYSBASE3 in SDM.
1168 MSR_P6_MTRRPHYSBASE4 is defined as MTRRPHYSBASE4 in SDM.
1169 MSR_P6_MTRRPHYSBASE5 is defined as MTRRPHYSBASE5 in SDM.
1170 MSR_P6_MTRRPHYSBASE6 is defined as MTRRPHYSBASE6 in SDM.
1171 MSR_P6_MTRRPHYSBASE7 is defined as MTRRPHYSBASE7 in SDM.
1174 #define MSR_P6_MTRRPHYSBASE0 0x00000200
1175 #define MSR_P6_MTRRPHYSBASE1 0x00000202
1176 #define MSR_P6_MTRRPHYSBASE2 0x00000204
1177 #define MSR_P6_MTRRPHYSBASE3 0x00000206
1178 #define MSR_P6_MTRRPHYSBASE4 0x00000208
1179 #define MSR_P6_MTRRPHYSBASE5 0x0000020A
1180 #define MSR_P6_MTRRPHYSBASE6 0x0000020C
1181 #define MSR_P6_MTRRPHYSBASE7 0x0000020E
1188 @param ECX MSR_P6_MTRRPHYSMASKn
1189 @param EAX Lower 32-bits of MSR value.
1190 @param EDX Upper 32-bits of MSR value.
1192 <b>Example usage</b>
1196 Msr = AsmReadMsr64 (MSR_P6_MTRRPHYSMASK0);
1197 AsmWriteMsr64 (MSR_P6_MTRRPHYSMASK0, Msr);
1199 @note MSR_P6_MTRRPHYSMASK0 is defined as MTRRPHYSMASK0 in SDM.
1200 MSR_P6_MTRRPHYSMASK1 is defined as MTRRPHYSMASK1 in SDM.
1201 MSR_P6_MTRRPHYSMASK2 is defined as MTRRPHYSMASK2 in SDM.
1202 MSR_P6_MTRRPHYSMASK3 is defined as MTRRPHYSMASK3 in SDM.
1203 MSR_P6_MTRRPHYSMASK4 is defined as MTRRPHYSMASK4 in SDM.
1204 MSR_P6_MTRRPHYSMASK5 is defined as MTRRPHYSMASK5 in SDM.
1205 MSR_P6_MTRRPHYSMASK6 is defined as MTRRPHYSMASK6 in SDM.
1206 MSR_P6_MTRRPHYSMASK7 is defined as MTRRPHYSMASK7 in SDM.
1209 #define MSR_P6_MTRRPHYSMASK0 0x00000201
1210 #define MSR_P6_MTRRPHYSMASK1 0x00000203
1211 #define MSR_P6_MTRRPHYSMASK2 0x00000205
1212 #define MSR_P6_MTRRPHYSMASK3 0x00000207
1213 #define MSR_P6_MTRRPHYSMASK4 0x00000209
1214 #define MSR_P6_MTRRPHYSMASK5 0x0000020B
1215 #define MSR_P6_MTRRPHYSMASK6 0x0000020D
1216 #define MSR_P6_MTRRPHYSMASK7 0x0000020F
1223 @param ECX MSR_P6_MTRRFIX64K_00000 (0x00000250)
1224 @param EAX Lower 32-bits of MSR value.
1225 @param EDX Upper 32-bits of MSR value.
1227 <b>Example usage</b>
1231 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX64K_00000);
1232 AsmWriteMsr64 (MSR_P6_MTRRFIX64K_00000, Msr);
1234 @note MSR_P6_MTRRFIX64K_00000 is defined as MTRRFIX64K_00000 in SDM.
1236 #define MSR_P6_MTRRFIX64K_00000 0x00000250
1242 @param ECX MSR_P6_MTRRFIX16K_80000 (0x00000258)
1243 @param EAX Lower 32-bits of MSR value.
1244 @param EDX Upper 32-bits of MSR value.
1246 <b>Example usage</b>
1250 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX16K_80000);
1251 AsmWriteMsr64 (MSR_P6_MTRRFIX16K_80000, Msr);
1253 @note MSR_P6_MTRRFIX16K_80000 is defined as MTRRFIX16K_80000 in SDM.
1255 #define MSR_P6_MTRRFIX16K_80000 0x00000258
1261 @param ECX MSR_P6_MTRRFIX16K_A0000 (0x00000259)
1262 @param EAX Lower 32-bits of MSR value.
1263 @param EDX Upper 32-bits of MSR value.
1265 <b>Example usage</b>
1269 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX16K_A0000);
1270 AsmWriteMsr64 (MSR_P6_MTRRFIX16K_A0000, Msr);
1272 @note MSR_P6_MTRRFIX16K_A0000 is defined as MTRRFIX16K_A0000 in SDM.
1274 #define MSR_P6_MTRRFIX16K_A0000 0x00000259
1280 @param ECX MSR_P6_MTRRFIX4K_C0000 (0x00000268)
1281 @param EAX Lower 32-bits of MSR value.
1282 @param EDX Upper 32-bits of MSR value.
1284 <b>Example usage</b>
1288 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_C0000);
1289 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_C0000, Msr);
1291 @note MSR_P6_MTRRFIX4K_C0000 is defined as MTRRFIX4K_C0000 in SDM.
1293 #define MSR_P6_MTRRFIX4K_C0000 0x00000268
1299 @param ECX MSR_P6_MTRRFIX4K_C8000 (0x00000269)
1300 @param EAX Lower 32-bits of MSR value.
1301 @param EDX Upper 32-bits of MSR value.
1303 <b>Example usage</b>
1307 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_C8000);
1308 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_C8000, Msr);
1310 @note MSR_P6_MTRRFIX4K_C8000 is defined as MTRRFIX4K_C8000 in SDM.
1312 #define MSR_P6_MTRRFIX4K_C8000 0x00000269
1318 @param ECX MSR_P6_MTRRFIX4K_D0000 (0x0000026A)
1319 @param EAX Lower 32-bits of MSR value.
1320 @param EDX Upper 32-bits of MSR value.
1322 <b>Example usage</b>
1326 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_D0000);
1327 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_D0000, Msr);
1329 @note MSR_P6_MTRRFIX4K_D0000 is defined as MTRRFIX4K_D0000 in SDM.
1331 #define MSR_P6_MTRRFIX4K_D0000 0x0000026A
1337 @param ECX MSR_P6_MTRRFIX4K_D8000 (0x0000026B)
1338 @param EAX Lower 32-bits of MSR value.
1339 @param EDX Upper 32-bits of MSR value.
1341 <b>Example usage</b>
1345 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_D8000);
1346 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_D8000, Msr);
1348 @note MSR_P6_MTRRFIX4K_D8000 is defined as MTRRFIX4K_D8000 in SDM.
1350 #define MSR_P6_MTRRFIX4K_D8000 0x0000026B
1356 @param ECX MSR_P6_MTRRFIX4K_E0000 (0x0000026C)
1357 @param EAX Lower 32-bits of MSR value.
1358 @param EDX Upper 32-bits of MSR value.
1360 <b>Example usage</b>
1364 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_E0000);
1365 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_E0000, Msr);
1367 @note MSR_P6_MTRRFIX4K_E0000 is defined as MTRRFIX4K_E0000 in SDM.
1369 #define MSR_P6_MTRRFIX4K_E0000 0x0000026C
1375 @param ECX MSR_P6_MTRRFIX4K_E8000 (0x0000026D)
1376 @param EAX Lower 32-bits of MSR value.
1377 @param EDX Upper 32-bits of MSR value.
1379 <b>Example usage</b>
1383 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_E8000);
1384 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_E8000, Msr);
1386 @note MSR_P6_MTRRFIX4K_E8000 is defined as MTRRFIX4K_E8000 in SDM.
1388 #define MSR_P6_MTRRFIX4K_E8000 0x0000026D
1394 @param ECX MSR_P6_MTRRFIX4K_F0000 (0x0000026E)
1395 @param EAX Lower 32-bits of MSR value.
1396 @param EDX Upper 32-bits of MSR value.
1398 <b>Example usage</b>
1402 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_F0000);
1403 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_F0000, Msr);
1405 @note MSR_P6_MTRRFIX4K_F0000 is defined as MTRRFIX4K_F0000 in SDM.
1407 #define MSR_P6_MTRRFIX4K_F0000 0x0000026E
1413 @param ECX MSR_P6_MTRRFIX4K_F8000 (0x0000026F)
1414 @param EAX Lower 32-bits of MSR value.
1415 @param EDX Upper 32-bits of MSR value.
1417 <b>Example usage</b>
1421 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_F8000);
1422 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_F8000, Msr);
1424 @note MSR_P6_MTRRFIX4K_F8000 is defined as MTRRFIX4K_F8000 in SDM.
1426 #define MSR_P6_MTRRFIX4K_F8000 0x0000026F
1432 @param ECX MSR_P6_MTRRDEFTYPE (0x000002FF)
1433 @param EAX Lower 32-bits of MSR value.
1434 Described by the type MSR_P6_MTRRDEFTYPE_REGISTER.
1435 @param EDX Upper 32-bits of MSR value.
1436 Described by the type MSR_P6_MTRRDEFTYPE_REGISTER.
1438 <b>Example usage</b>
1440 MSR_P6_MTRRDEFTYPE_REGISTER Msr;
1442 Msr.Uint64 = AsmReadMsr64 (MSR_P6_MTRRDEFTYPE);
1443 AsmWriteMsr64 (MSR_P6_MTRRDEFTYPE, Msr.Uint64);
1445 @note MSR_P6_MTRRDEFTYPE is defined as MTRRDEFTYPE in SDM.
1447 #define MSR_P6_MTRRDEFTYPE 0x000002FF
1450 MSR information returned for MSR index #MSR_P6_MTRRDEFTYPE
1454 /// Individual bit fields
1458 /// [Bits 2:0] Default memory type.
1463 /// [Bit 10] Fixed MTRR enable.
1467 /// [Bit 11] MTRR Enable.
1470 UINT32 Reserved2
:20;
1471 UINT32 Reserved3
:32;
1474 /// All bit fields as a 32-bit value
1478 /// All bit fields as a 64-bit value
1481 } MSR_P6_MTRRDEFTYPE_REGISTER
;
1487 @param ECX MSR_P6_MC0_CTL (0x00000400)
1488 @param EAX Lower 32-bits of MSR value.
1489 @param EDX Upper 32-bits of MSR value.
1491 <b>Example usage</b>
1495 Msr = AsmReadMsr64 (MSR_P6_MC0_CTL);
1496 AsmWriteMsr64 (MSR_P6_MC0_CTL, Msr);
1498 @note MSR_P6_MC0_CTL is defined as MC0_CTL in SDM.
1499 MSR_P6_MC1_CTL is defined as MC1_CTL in SDM.
1500 MSR_P6_MC2_CTL is defined as MC2_CTL in SDM.
1501 MSR_P6_MC3_CTL is defined as MC3_CTL in SDM.
1502 MSR_P6_MC4_CTL is defined as MC4_CTL in SDM.
1505 #define MSR_P6_MC0_CTL 0x00000400
1506 #define MSR_P6_MC1_CTL 0x00000404
1507 #define MSR_P6_MC2_CTL 0x00000408
1508 #define MSR_P6_MC3_CTL 0x00000410
1509 #define MSR_P6_MC4_CTL 0x0000040C
1515 Bit definitions for MSR_P6_MC4_STATUS are the same as MSR_P6_MC0_STATUS,
1516 except bits 0, 4, 57, and 61 are hardcoded to 1.
1518 @param ECX MSR_P6_MCn_STATUS
1519 @param EAX Lower 32-bits of MSR value.
1520 Described by the type MSR_P6_MC_STATUS_REGISTER.
1521 @param EDX Upper 32-bits of MSR value.
1522 Described by the type MSR_P6_MC_STATUS_REGISTER.
1524 <b>Example usage</b>
1526 MSR_P6_MC_STATUS_REGISTER Msr;
1528 Msr.Uint64 = AsmReadMsr64 (MSR_P6_MC0_STATUS);
1529 AsmWriteMsr64 (MSR_P6_MC0_STATUS, Msr.Uint64);
1531 @note MSR_P6_MC0_STATUS is defined as MC0_STATUS in SDM.
1532 MSR_P6_MC1_STATUS is defined as MC1_STATUS in SDM.
1533 MSR_P6_MC2_STATUS is defined as MC2_STATUS in SDM.
1534 MSR_P6_MC3_STATUS is defined as MC3_STATUS in SDM.
1535 MSR_P6_MC4_STATUS is defined as MC4_STATUS in SDM.
1538 #define MSR_P6_MC0_STATUS 0x00000401
1539 #define MSR_P6_MC1_STATUS 0x00000405
1540 #define MSR_P6_MC2_STATUS 0x00000409
1541 #define MSR_P6_MC3_STATUS 0x00000411
1542 #define MSR_P6_MC4_STATUS 0x0000040D
1546 MSR information returned for MSR index #MSR_P6_MC0_STATUS to
1551 /// Individual bit fields
1555 /// [Bits 15:0] MC_STATUS_MCACOD.
1557 UINT32 MC_STATUS_MCACOD
:16;
1559 /// [Bits 31:16] MC_STATUS_MSCOD.
1561 UINT32 MC_STATUS_MSCOD
:16;
1564 /// [Bit 57] MC_STATUS_DAM.
1566 UINT32 MC_STATUS_DAM
:1;
1568 /// [Bit 58] MC_STATUS_ADDRV.
1570 UINT32 MC_STATUS_ADDRV
:1;
1572 /// [Bit 59] MC_STATUS_MISCV.
1574 UINT32 MC_STATUS_MISCV
:1;
1576 /// [Bit 60] MC_STATUS_EN. (Note: For MC0_STATUS only, this bit is
1577 /// hardcoded to 1.).
1579 UINT32 MC_STATUS_EN
:1;
1581 /// [Bit 61] MC_STATUS_UC.
1583 UINT32 MC_STATUS_UC
:1;
1585 /// [Bit 62] MC_STATUS_O.
1587 UINT32 MC_STATUS_O
:1;
1589 /// [Bit 63] MC_STATUS_V.
1591 UINT32 MC_STATUS_V
:1;
1594 /// All bit fields as a 64-bit value
1597 } MSR_P6_MC_STATUS_REGISTER
;
1602 MSR_P6_MC4_ADDR is defined in MCA architecture but not implemented in P6 Family processors.
1604 @param ECX MSR_P6_MC0_ADDR (0x00000402)
1605 @param EAX Lower 32-bits of MSR value.
1606 @param EDX Upper 32-bits of MSR value.
1608 <b>Example usage</b>
1612 Msr = AsmReadMsr64 (MSR_P6_MC0_ADDR);
1613 AsmWriteMsr64 (MSR_P6_MC0_ADDR, Msr);
1615 @note MSR_P6_MC0_ADDR is defined as MC0_ADDR in SDM.
1616 MSR_P6_MC1_ADDR is defined as MC1_ADDR in SDM.
1617 MSR_P6_MC2_ADDR is defined as MC2_ADDR in SDM.
1618 MSR_P6_MC3_ADDR is defined as MC3_ADDR in SDM.
1619 MSR_P6_MC4_ADDR is defined as MC4_ADDR in SDM.
1622 #define MSR_P6_MC0_ADDR 0x00000402
1623 #define MSR_P6_MC1_ADDR 0x00000406
1624 #define MSR_P6_MC2_ADDR 0x0000040A
1625 #define MSR_P6_MC3_ADDR 0x00000412
1626 #define MSR_P6_MC4_ADDR 0x0000040E
1631 Defined in MCA architecture but not implemented in the P6 family processors.
1633 @param ECX MSR_P6_MC0_MISC (0x00000403)
1634 @param EAX Lower 32-bits of MSR value.
1635 @param EDX Upper 32-bits of MSR value.
1637 <b>Example usage</b>
1641 Msr = AsmReadMsr64 (MSR_P6_MC0_MISC);
1642 AsmWriteMsr64 (MSR_P6_MC0_MISC, Msr);
1644 @note MSR_P6_MC0_MISC is defined as MC0_MISC in SDM.
1645 MSR_P6_MC1_MISC is defined as MC1_MISC in SDM.
1646 MSR_P6_MC2_MISC is defined as MC2_MISC in SDM.
1647 MSR_P6_MC3_MISC is defined as MC3_MISC in SDM.
1648 MSR_P6_MC4_MISC is defined as MC4_MISC in SDM.
1651 #define MSR_P6_MC0_MISC 0x00000403
1652 #define MSR_P6_MC1_MISC 0x00000407
1653 #define MSR_P6_MC2_MISC 0x0000040B
1654 #define MSR_P6_MC3_MISC 0x00000413
1655 #define MSR_P6_MC4_MISC 0x0000040F