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 - 2019, 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/Intel/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
63 See Section 2.22, "MSRs in Pentium Processors.".
65 @param ECX MSR_P6_P5_MC_TYPE (0x00000001)
66 @param EAX Lower 32-bits of MSR value.
67 @param EDX Upper 32-bits of MSR value.
73 Msr = AsmReadMsr64 (MSR_P6_P5_MC_TYPE);
74 AsmWriteMsr64 (MSR_P6_P5_MC_TYPE, Msr);
76 @note MSR_P6_P5_MC_TYPE is defined as P5_MC_TYPE in SDM.
78 #define MSR_P6_P5_MC_TYPE 0x00000001
81 See Section 17.17, "Time-Stamp Counter.".
83 @param ECX MSR_P6_TSC (0x00000010)
84 @param EAX Lower 32-bits of MSR value.
85 @param EDX Upper 32-bits of MSR value.
91 Msr = AsmReadMsr64 (MSR_P6_TSC);
92 AsmWriteMsr64 (MSR_P6_TSC, Msr);
94 @note MSR_P6_TSC is defined as TSC in SDM.
96 #define MSR_P6_TSC 0x00000010
99 Platform ID (R) The operating system can use this MSR to determine "slot"
100 information for the processor and the proper microcode update to load.
102 @param ECX MSR_P6_IA32_PLATFORM_ID (0x00000017)
103 @param EAX Lower 32-bits of MSR value.
104 Described by the type MSR_P6_IA32_PLATFORM_ID_REGISTER.
105 @param EDX Upper 32-bits of MSR value.
106 Described by the type MSR_P6_IA32_PLATFORM_ID_REGISTER.
110 MSR_P6_IA32_PLATFORM_ID_REGISTER Msr;
112 Msr.Uint64 = AsmReadMsr64 (MSR_P6_IA32_PLATFORM_ID);
114 @note MSR_P6_IA32_PLATFORM_ID is defined as IA32_PLATFORM_ID in SDM.
116 #define MSR_P6_IA32_PLATFORM_ID 0x00000017
119 MSR information returned for MSR index #MSR_P6_IA32_PLATFORM_ID
123 /// Individual bit fields
126 UINT32 Reserved1
: 32;
127 UINT32 Reserved2
: 18;
129 /// [Bits 52:50] Platform Id (R) Contains information concerning the
130 /// intended platform for the processor.
133 /// 0 0 0 Processor Flag 0.
134 /// 0 0 1 Processor Flag 1
135 /// 0 1 0 Processor Flag 2
136 /// 0 1 1 Processor Flag 3
137 /// 1 0 0 Processor Flag 4
138 /// 1 0 1 Processor Flag 5
139 /// 1 1 0 Processor Flag 6
140 /// 1 1 1 Processor Flag 7
142 UINT32 PlatformId
: 3;
144 /// [Bits 56:53] L2 Cache Latency Read.
146 UINT32 L2CacheLatencyRead
: 4;
147 UINT32 Reserved3
: 3;
149 /// [Bit 60] Clock Frequency Ratio Read.
151 UINT32 ClockFrequencyRatioRead
: 1;
152 UINT32 Reserved4
: 3;
155 /// All bit fields as a 64-bit value
158 } MSR_P6_IA32_PLATFORM_ID_REGISTER
;
161 Section 10.4.4, "Local APIC Status and Location.".
163 @param ECX MSR_P6_APIC_BASE (0x0000001B)
164 @param EAX Lower 32-bits of MSR value.
165 Described by the type MSR_P6_APIC_BASE_REGISTER.
166 @param EDX Upper 32-bits of MSR value.
167 Described by the type MSR_P6_APIC_BASE_REGISTER.
171 MSR_P6_APIC_BASE_REGISTER Msr;
173 Msr.Uint64 = AsmReadMsr64 (MSR_P6_APIC_BASE);
174 AsmWriteMsr64 (MSR_P6_APIC_BASE, Msr.Uint64);
176 @note MSR_P6_APIC_BASE is defined as APIC_BASE in SDM.
178 #define MSR_P6_APIC_BASE 0x0000001B
181 MSR information returned for MSR index #MSR_P6_APIC_BASE
185 /// Individual bit fields
188 UINT32 Reserved1
: 8;
190 /// [Bit 8] Boot Strap Processor indicator Bit 1 = BSP.
193 UINT32 Reserved2
: 2;
195 /// [Bit 11] APIC Global Enable Bit - Permanent till reset 1 = Enabled 0 =
200 /// [Bits 31:12] APIC Base Address.
202 UINT32 ApicBase
: 20;
203 UINT32 Reserved3
: 32;
206 /// All bit fields as a 32-bit value
210 /// All bit fields as a 64-bit value
213 } MSR_P6_APIC_BASE_REGISTER
;
216 Processor Hard Power-On Configuration (R/W) Enables and disables processor
217 features; (R) indicates current processor configuration.
219 @param ECX MSR_P6_EBL_CR_POWERON (0x0000002A)
220 @param EAX Lower 32-bits of MSR value.
221 Described by the type MSR_P6_EBL_CR_POWERON_REGISTER.
222 @param EDX Upper 32-bits of MSR value.
223 Described by the type MSR_P6_EBL_CR_POWERON_REGISTER.
227 MSR_P6_EBL_CR_POWERON_REGISTER Msr;
229 Msr.Uint64 = AsmReadMsr64 (MSR_P6_EBL_CR_POWERON);
230 AsmWriteMsr64 (MSR_P6_EBL_CR_POWERON, Msr.Uint64);
232 @note MSR_P6_EBL_CR_POWERON is defined as EBL_CR_POWERON in SDM.
234 #define MSR_P6_EBL_CR_POWERON 0x0000002A
237 MSR information returned for MSR index #MSR_P6_EBL_CR_POWERON
241 /// Individual bit fields
244 UINT32 Reserved1
: 1;
246 /// [Bit 1] Data Error Checking Enable (R/W) 1 = Enabled 0 = Disabled.
248 UINT32 DataErrorCheckingEnable
: 1;
250 /// [Bit 2] Response Error Checking Enable FRCERR Observation Enable (R/W)
251 /// 1 = Enabled 0 = Disabled.
253 UINT32 ResponseErrorCheckingEnable
: 1;
255 /// [Bit 3] AERR# Drive Enable (R/W) 1 = Enabled 0 = Disabled.
257 UINT32 AERR_DriveEnable
: 1;
259 /// [Bit 4] BERR# Enable for Initiator Bus Requests (R/W) 1 = Enabled 0 =
262 UINT32 BERR_Enable
: 1;
263 UINT32 Reserved2
: 1;
265 /// [Bit 6] BERR# Driver Enable for Initiator Internal Errors (R/W) 1 =
266 /// Enabled 0 = Disabled.
268 UINT32 BERR_DriverEnable
: 1;
270 /// [Bit 7] BINIT# Driver Enable (R/W) 1 = Enabled 0 = Disabled.
272 UINT32 BINIT_DriverEnable
: 1;
274 /// [Bit 8] Output Tri-state Enabled (R) 1 = Enabled 0 = Disabled.
276 UINT32 OutputTriStateEnable
: 1;
278 /// [Bit 9] Execute BIST (R) 1 = Enabled 0 = Disabled.
280 UINT32 ExecuteBIST
: 1;
282 /// [Bit 10] AERR# Observation Enabled (R) 1 = Enabled 0 = Disabled.
284 UINT32 AERR_ObservationEnabled
: 1;
285 UINT32 Reserved3
: 1;
287 /// [Bit 12] BINIT# Observation Enabled (R) 1 = Enabled 0 = Disabled.
289 UINT32 BINIT_ObservationEnabled
: 1;
291 /// [Bit 13] In Order Queue Depth (R) 1 = 1 0 = 8.
293 UINT32 InOrderQueueDepth
: 1;
295 /// [Bit 14] 1-MByte Power on Reset Vector (R) 1 = 1MByte 0 = 4GBytes.
297 UINT32 ResetVector
: 1;
299 /// [Bit 15] FRC Mode Enable (R) 1 = Enabled 0 = Disabled.
301 UINT32 FRCModeEnable
: 1;
303 /// [Bits 17:16] APIC Cluster ID (R).
305 UINT32 APICClusterID
: 2;
307 /// [Bits 19:18] System Bus Frequency (R) 00 = 66MHz 10 = 100Mhz 01 =
308 /// 133MHz 11 = Reserved.
310 UINT32 SystemBusFrequency
: 2;
312 /// [Bits 21:20] Symmetric Arbitration ID (R).
314 UINT32 SymmetricArbitrationID
: 2;
316 /// [Bits 25:22] Clock Frequency Ratio (R).
318 UINT32 ClockFrequencyRatio
: 4;
320 /// [Bit 26] Low Power Mode Enable (R/W).
322 UINT32 LowPowerModeEnable
: 1;
324 /// [Bit 27] Clock Frequency Ratio.
326 UINT32 ClockFrequencyRatio1
: 1;
327 UINT32 Reserved4
: 4;
328 UINT32 Reserved5
: 32;
331 /// All bit fields as a 32-bit value
335 /// All bit fields as a 64-bit value
338 } MSR_P6_EBL_CR_POWERON_REGISTER
;
341 Test Control Register.
343 @param ECX MSR_P6_TEST_CTL (0x00000033)
344 @param EAX Lower 32-bits of MSR value.
345 Described by the type MSR_P6_TEST_CTL_REGISTER.
346 @param EDX Upper 32-bits of MSR value.
347 Described by the type MSR_P6_TEST_CTL_REGISTER.
351 MSR_P6_TEST_CTL_REGISTER Msr;
353 Msr.Uint64 = AsmReadMsr64 (MSR_P6_TEST_CTL);
354 AsmWriteMsr64 (MSR_P6_TEST_CTL, Msr.Uint64);
356 @note MSR_P6_TEST_CTL is defined as TEST_CTL in SDM.
358 #define MSR_P6_TEST_CTL 0x00000033
361 MSR information returned for MSR index #MSR_P6_TEST_CTL
365 /// Individual bit fields
368 UINT32 Reserved1
: 30;
370 /// [Bit 30] Streaming Buffer Disable.
372 UINT32 StreamingBufferDisable
: 1;
374 /// [Bit 31] Disable LOCK# Assertion for split locked access.
376 UINT32 Disable_LOCK
: 1;
377 UINT32 Reserved2
: 32;
380 /// All bit fields as a 32-bit value
384 /// All bit fields as a 64-bit value
387 } MSR_P6_TEST_CTL_REGISTER
;
390 BIOS Update Trigger Register.
392 @param ECX MSR_P6_BIOS_UPDT_TRIG (0x00000079)
393 @param EAX Lower 32-bits of MSR value.
394 @param EDX Upper 32-bits of MSR value.
400 Msr = AsmReadMsr64 (MSR_P6_BIOS_UPDT_TRIG);
401 AsmWriteMsr64 (MSR_P6_BIOS_UPDT_TRIG, Msr);
403 @note MSR_P6_BIOS_UPDT_TRIG is defined as BIOS_UPDT_TRIG in SDM.
405 #define MSR_P6_BIOS_UPDT_TRIG 0x00000079
408 Chunk n data register D[63:0]: used to write to and read from the L2.
410 @param ECX MSR_P6_BBL_CR_Dn
411 @param EAX Lower 32-bits of MSR value.
412 @param EDX Upper 32-bits of MSR value.
418 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_D0);
419 AsmWriteMsr64 (MSR_P6_BBL_CR_D0, Msr);
421 @note MSR_P6_BBL_CR_D0 is defined as BBL_CR_D0 in SDM.
422 MSR_P6_BBL_CR_D1 is defined as BBL_CR_D1 in SDM.
423 MSR_P6_BBL_CR_D2 is defined as BBL_CR_D2 in SDM.
426 #define MSR_P6_BBL_CR_D0 0x00000088
427 #define MSR_P6_BBL_CR_D1 0x00000089
428 #define MSR_P6_BBL_CR_D2 0x0000008A
432 BIOS Update Signature Register or Chunk 3 data register D[63:0] Used to
433 write to and read from the L2 depending on the usage model.
435 @param ECX MSR_P6_BIOS_SIGN (0x0000008B)
436 @param EAX Lower 32-bits of MSR value.
437 @param EDX Upper 32-bits of MSR value.
443 Msr = AsmReadMsr64 (MSR_P6_BIOS_SIGN);
444 AsmWriteMsr64 (MSR_P6_BIOS_SIGN, Msr);
446 @note MSR_P6_BIOS_SIGN is defined as BIOS_SIGN in SDM.
448 #define MSR_P6_BIOS_SIGN 0x0000008B
453 @param ECX MSR_P6_PERFCTR0 (0x000000C1)
454 @param EAX Lower 32-bits of MSR value.
455 @param EDX Upper 32-bits of MSR value.
461 Msr = AsmReadMsr64 (MSR_P6_PERFCTR0);
462 AsmWriteMsr64 (MSR_P6_PERFCTR0, Msr);
464 @note MSR_P6_PERFCTR0 is defined as PERFCTR0 in SDM.
465 MSR_P6_PERFCTR1 is defined as PERFCTR1 in SDM.
468 #define MSR_P6_PERFCTR0 0x000000C1
469 #define MSR_P6_PERFCTR1 0x000000C2
475 @param ECX MSR_P6_MTRRCAP (0x000000FE)
476 @param EAX Lower 32-bits of MSR value.
477 @param EDX Upper 32-bits of MSR value.
483 Msr = AsmReadMsr64 (MSR_P6_MTRRCAP);
484 AsmWriteMsr64 (MSR_P6_MTRRCAP, Msr);
486 @note MSR_P6_MTRRCAP is defined as MTRRCAP in SDM.
488 #define MSR_P6_MTRRCAP 0x000000FE
491 Address register: used to send specified address (A31-A3) to L2 during cache
492 initialization accesses.
494 @param ECX MSR_P6_BBL_CR_ADDR (0x00000116)
495 @param EAX Lower 32-bits of MSR value.
496 Described by the type MSR_P6_BBL_CR_ADDR_REGISTER.
497 @param EDX Upper 32-bits of MSR value.
498 Described by the type MSR_P6_BBL_CR_ADDR_REGISTER.
502 MSR_P6_BBL_CR_ADDR_REGISTER Msr;
504 Msr.Uint64 = AsmReadMsr64 (MSR_P6_BBL_CR_ADDR);
505 AsmWriteMsr64 (MSR_P6_BBL_CR_ADDR, Msr.Uint64);
507 @note MSR_P6_BBL_CR_ADDR is defined as BBL_CR_ADDR in SDM.
509 #define MSR_P6_BBL_CR_ADDR 0x00000116
512 MSR information returned for MSR index #MSR_P6_BBL_CR_ADDR
516 /// Individual bit fields
519 UINT32 Reserved1
: 3;
521 /// [Bits 31:3] Address bits
524 UINT32 Reserved2
: 32;
527 /// All bit fields as a 32-bit value
531 /// All bit fields as a 64-bit value
534 } MSR_P6_BBL_CR_ADDR_REGISTER
;
537 Data ECC register D[7:0]: used to write ECC and read ECC to/from L2.
539 @param ECX MSR_P6_BBL_CR_DECC (0x00000118)
540 @param EAX Lower 32-bits of MSR value.
541 @param EDX Upper 32-bits of MSR value.
547 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_DECC);
548 AsmWriteMsr64 (MSR_P6_BBL_CR_DECC, Msr);
550 @note MSR_P6_BBL_CR_DECC is defined as BBL_CR_DECC in SDM.
552 #define MSR_P6_BBL_CR_DECC 0x00000118
555 Control register: used to program L2 commands to be issued via cache
556 configuration accesses mechanism. Also receives L2 lookup response.
558 @param ECX MSR_P6_BBL_CR_CTL (0x00000119)
559 @param EAX Lower 32-bits of MSR value.
560 Described by the type MSR_P6_BBL_CR_CTL_REGISTER.
561 @param EDX Upper 32-bits of MSR value.
562 Described by the type MSR_P6_BBL_CR_CTL_REGISTER.
566 MSR_P6_BBL_CR_CTL_REGISTER Msr;
568 Msr.Uint64 = AsmReadMsr64 (MSR_P6_BBL_CR_CTL);
569 AsmWriteMsr64 (MSR_P6_BBL_CR_CTL, Msr.Uint64);
571 @note MSR_P6_BBL_CR_CTL is defined as BBL_CR_CTL in SDM.
573 #define MSR_P6_BBL_CR_CTL 0x00000119
576 MSR information returned for MSR index #MSR_P6_BBL_CR_CTL
580 /// Individual bit fields
584 /// [Bits 4:0] L2 Command
585 /// Data Read w/ LRU update (RLU)
586 /// Tag Read w/ Data Read (TRR)
588 /// L2 Control Register Read (CR)
589 /// L2 Control Register Write (CW)
590 /// Tag Write w/ Data Read (TWR)
591 /// Tag Write w/ Data Write (TWW)
594 UINT32 L2Command
: 5;
596 /// [Bits 6:5] State to L2
598 UINT32 StateToL2
: 2;
601 /// [Bits 9:8] Way to L2.
605 /// [Bits 11:10] Way 0 - 00, Way 1 - 01, Way 2 - 10, Way 3 - 11.
609 /// [Bits 13:12] Modified - 11,Exclusive - 10, Shared - 01, Invalid - 00.
613 /// [Bits 15:14] State from L2.
615 UINT32 StateFromL2
: 2;
616 UINT32 Reserved2
: 1;
621 UINT32 Reserved3
: 1;
623 /// [Bits 20:19] User supplied ECC.
627 /// [Bit 21] Processor number Disable = 1 Enable = 0 Reserved.
629 UINT32 ProcessorNumber
: 1;
630 UINT32 Reserved4
: 10;
631 UINT32 Reserved5
: 32;
634 /// All bit fields as a 32-bit value
638 /// All bit fields as a 64-bit value
641 } MSR_P6_BBL_CR_CTL_REGISTER
;
644 Trigger register: used to initiate a cache configuration accesses access,
645 Write only with Data = 0.
647 @param ECX MSR_P6_BBL_CR_TRIG (0x0000011A)
648 @param EAX Lower 32-bits of MSR value.
649 @param EDX Upper 32-bits of MSR value.
655 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_TRIG);
656 AsmWriteMsr64 (MSR_P6_BBL_CR_TRIG, Msr);
658 @note MSR_P6_BBL_CR_TRIG is defined as BBL_CR_TRIG in SDM.
660 #define MSR_P6_BBL_CR_TRIG 0x0000011A
663 Busy register: indicates when a cache configuration accesses L2 command is
664 in progress. D[0] = 1 = BUSY.
666 @param ECX MSR_P6_BBL_CR_BUSY (0x0000011B)
667 @param EAX Lower 32-bits of MSR value.
668 @param EDX Upper 32-bits of MSR value.
674 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_BUSY);
675 AsmWriteMsr64 (MSR_P6_BBL_CR_BUSY, Msr);
677 @note MSR_P6_BBL_CR_BUSY is defined as BBL_CR_BUSY in SDM.
679 #define MSR_P6_BBL_CR_BUSY 0x0000011B
682 Control register 3: used to configure the L2 Cache.
684 @param ECX MSR_P6_BBL_CR_CTL3 (0x0000011E)
685 @param EAX Lower 32-bits of MSR value.
686 Described by the type MSR_P6_BBL_CR_CTL3_REGISTER.
687 @param EDX Upper 32-bits of MSR value.
688 Described by the type MSR_P6_BBL_CR_CTL3_REGISTER.
692 MSR_P6_BBL_CR_CTL3_REGISTER Msr;
694 Msr.Uint64 = AsmReadMsr64 (MSR_P6_BBL_CR_CTL3);
695 AsmWriteMsr64 (MSR_P6_BBL_CR_CTL3, Msr.Uint64);
697 @note MSR_P6_BBL_CR_CTL3 is defined as BBL_CR_CTL3 in SDM.
699 #define MSR_P6_BBL_CR_CTL3 0x0000011E
702 MSR information returned for MSR index #MSR_P6_BBL_CR_CTL3
706 /// Individual bit fields
710 /// [Bit 0] L2 Configured (read/write ).
712 UINT32 L2Configured
: 1;
714 /// [Bits 4:1] L2 Cache Latency (read/write).
716 UINT32 L2CacheLatency
: 4;
718 /// [Bit 5] ECC Check Enable (read/write).
720 UINT32 ECCCheckEnable
: 1;
722 /// [Bit 6] Address Parity Check Enable (read/write).
724 UINT32 AddressParityCheckEnable
: 1;
726 /// [Bit 7] CRTN Parity Check Enable (read/write).
728 UINT32 CRTNParityCheckEnable
: 1;
730 /// [Bit 8] L2 Enabled (read/write).
732 UINT32 L2Enabled
: 1;
734 /// [Bits 10:9] L2 Associativity (read only) Direct Mapped 2 Way 4 Way
737 UINT32 L2Associativity
: 2;
739 /// [Bits 12:11] Number of L2 banks (read only).
743 /// [Bits 17:13] Cache size per bank (read/write) 256KBytes 512KBytes
744 /// 1MByte 2MByte 4MBytes.
746 UINT32 CacheSizePerBank
: 5;
748 /// [Bit 18] Cache State error checking enable (read/write).
750 UINT32 CacheStateErrorEnable
: 1;
751 UINT32 Reserved1
: 1;
753 /// [Bits 22:20] L2 Physical Address Range support 64GBytes 32GBytes
754 /// 16GBytes 8GBytes 4GBytes 2GBytes 1GBytes 512MBytes.
756 UINT32 L2AddressRange
: 3;
758 /// [Bit 23] L2 Hardware Disable (read only).
760 UINT32 L2HardwareDisable
: 1;
761 UINT32 Reserved2
: 1;
763 /// [Bit 25] Cache bus fraction (read only).
765 UINT32 CacheBusFraction
: 1;
766 UINT32 Reserved3
: 6;
767 UINT32 Reserved4
: 32;
770 /// All bit fields as a 32-bit value
774 /// All bit fields as a 64-bit value
777 } MSR_P6_BBL_CR_CTL3_REGISTER
;
780 CS register target for CPL 0 code.
782 @param ECX MSR_P6_SYSENTER_CS_MSR (0x00000174)
783 @param EAX Lower 32-bits of MSR value.
784 @param EDX Upper 32-bits of MSR value.
790 Msr = AsmReadMsr64 (MSR_P6_SYSENTER_CS_MSR);
791 AsmWriteMsr64 (MSR_P6_SYSENTER_CS_MSR, Msr);
793 @note MSR_P6_SYSENTER_CS_MSR is defined as SYSENTER_CS_MSR in SDM.
795 #define MSR_P6_SYSENTER_CS_MSR 0x00000174
798 Stack pointer for CPL 0 stack.
800 @param ECX MSR_P6_SYSENTER_ESP_MSR (0x00000175)
801 @param EAX Lower 32-bits of MSR value.
802 @param EDX Upper 32-bits of MSR value.
808 Msr = AsmReadMsr64 (MSR_P6_SYSENTER_ESP_MSR);
809 AsmWriteMsr64 (MSR_P6_SYSENTER_ESP_MSR, Msr);
811 @note MSR_P6_SYSENTER_ESP_MSR is defined as SYSENTER_ESP_MSR in SDM.
813 #define MSR_P6_SYSENTER_ESP_MSR 0x00000175
816 CPL 0 code entry point.
818 @param ECX MSR_P6_SYSENTER_EIP_MSR (0x00000176)
819 @param EAX Lower 32-bits of MSR value.
820 @param EDX Upper 32-bits of MSR value.
826 Msr = AsmReadMsr64 (MSR_P6_SYSENTER_EIP_MSR);
827 AsmWriteMsr64 (MSR_P6_SYSENTER_EIP_MSR, Msr);
829 @note MSR_P6_SYSENTER_EIP_MSR is defined as SYSENTER_EIP_MSR in SDM.
831 #define MSR_P6_SYSENTER_EIP_MSR 0x00000176
836 @param ECX MSR_P6_MCG_CAP (0x00000179)
837 @param EAX Lower 32-bits of MSR value.
838 @param EDX Upper 32-bits of MSR value.
844 Msr = AsmReadMsr64 (MSR_P6_MCG_CAP);
845 AsmWriteMsr64 (MSR_P6_MCG_CAP, Msr);
847 @note MSR_P6_MCG_CAP is defined as MCG_CAP in SDM.
849 #define MSR_P6_MCG_CAP 0x00000179
854 @param ECX MSR_P6_MCG_STATUS (0x0000017A)
855 @param EAX Lower 32-bits of MSR value.
856 @param EDX Upper 32-bits of MSR value.
862 Msr = AsmReadMsr64 (MSR_P6_MCG_STATUS);
863 AsmWriteMsr64 (MSR_P6_MCG_STATUS, Msr);
865 @note MSR_P6_MCG_STATUS is defined as MCG_STATUS in SDM.
867 #define MSR_P6_MCG_STATUS 0x0000017A
872 @param ECX MSR_P6_MCG_CTL (0x0000017B)
873 @param EAX Lower 32-bits of MSR value.
874 @param EDX Upper 32-bits of MSR value.
880 Msr = AsmReadMsr64 (MSR_P6_MCG_CTL);
881 AsmWriteMsr64 (MSR_P6_MCG_CTL, Msr);
883 @note MSR_P6_MCG_CTL is defined as MCG_CTL in SDM.
885 #define MSR_P6_MCG_CTL 0x0000017B
890 @param ECX MSR_P6_PERFEVTSELn
891 @param EAX Lower 32-bits of MSR value.
892 Described by the type MSR_P6_PERFEVTSEL_REGISTER.
893 @param EDX Upper 32-bits of MSR value.
894 Described by the type MSR_P6_PERFEVTSEL_REGISTER.
898 MSR_P6_PERFEVTSEL_REGISTER Msr;
900 Msr.Uint64 = AsmReadMsr64 (MSR_P6_PERFEVTSEL0);
901 AsmWriteMsr64 (MSR_P6_PERFEVTSEL0, Msr.Uint64);
903 @note MSR_P6_PERFEVTSEL0 is defined as PERFEVTSEL0 in SDM.
904 MSR_P6_PERFEVTSEL1 is defined as PERFEVTSEL1 in SDM.
907 #define MSR_P6_PERFEVTSEL0 0x00000186
908 #define MSR_P6_PERFEVTSEL1 0x00000187
912 MSR information returned for MSR indexes #MSR_P6_PERFEVTSEL0 and
917 /// Individual bit fields
921 /// [Bits 7:0] Event Select Refer to Performance Counter section for a
922 /// list of event encodings.
924 UINT32 EventSelect
: 8;
926 /// [Bits 15:8] UMASK (Unit Mask) Unit mask register set to 0 to enable
927 /// all count options.
931 /// [Bit 16] USER Controls the counting of events at Privilege levels of
936 /// [Bit 17] OS Controls the counting of events at Privilege level of 0.
940 /// [Bit 18] E Occurrence/Duration Mode Select 1 = Occurrence 0 = Duration.
944 /// [Bit 19] PC Enabled the signaling of performance counter overflow via
949 /// [Bit 20] INT Enables the signaling of counter overflow via input to
950 /// APIC 1 = Enable 0 = Disable.
953 UINT32 Reserved1
: 1;
955 /// [Bit 22] ENABLE Enables the counting of performance events in both
956 /// counters 1 = Enable 0 = Disable.
960 /// [Bit 23] INV Inverts the result of the CMASK condition 1 = Inverted 0
965 /// [Bits 31:24] CMASK (Counter Mask).
968 UINT32 Reserved2
: 32;
971 /// All bit fields as a 32-bit value
975 /// All bit fields as a 64-bit value
978 } MSR_P6_PERFEVTSEL_REGISTER
;
983 @param ECX MSR_P6_DEBUGCTLMSR (0x000001D9)
984 @param EAX Lower 32-bits of MSR value.
985 Described by the type MSR_P6_DEBUGCTLMSR_REGISTER.
986 @param EDX Upper 32-bits of MSR value.
987 Described by the type MSR_P6_DEBUGCTLMSR_REGISTER.
991 MSR_P6_DEBUGCTLMSR_REGISTER Msr;
993 Msr.Uint64 = AsmReadMsr64 (MSR_P6_DEBUGCTLMSR);
994 AsmWriteMsr64 (MSR_P6_DEBUGCTLMSR, Msr.Uint64);
996 @note MSR_P6_DEBUGCTLMSR is defined as DEBUGCTLMSR in SDM.
998 #define MSR_P6_DEBUGCTLMSR 0x000001D9
1001 MSR information returned for MSR index #MSR_P6_DEBUGCTLMSR
1005 /// Individual bit fields
1009 /// [Bit 0] Enable/Disable Last Branch Records.
1013 /// [Bit 1] Branch Trap Flag.
1017 /// [Bit 2] Performance Monitoring/Break Point Pins.
1021 /// [Bit 3] Performance Monitoring/Break Point Pins.
1025 /// [Bit 4] Performance Monitoring/Break Point Pins.
1029 /// [Bit 5] Performance Monitoring/Break Point Pins.
1033 /// [Bit 6] Enable/Disable Execution Trace Messages.
1036 UINT32 Reserved1
: 25;
1037 UINT32 Reserved2
: 32;
1040 /// All bit fields as a 32-bit value
1044 /// All bit fields as a 64-bit value
1047 } MSR_P6_DEBUGCTLMSR_REGISTER
;
1052 @param ECX MSR_P6_LASTBRANCHFROMIP (0x000001DB)
1053 @param EAX Lower 32-bits of MSR value.
1054 @param EDX Upper 32-bits of MSR value.
1056 <b>Example usage</b>
1060 Msr = AsmReadMsr64 (MSR_P6_LASTBRANCHFROMIP);
1061 AsmWriteMsr64 (MSR_P6_LASTBRANCHFROMIP, Msr);
1063 @note MSR_P6_LASTBRANCHFROMIP is defined as LASTBRANCHFROMIP in SDM.
1065 #define MSR_P6_LASTBRANCHFROMIP 0x000001DB
1070 @param ECX MSR_P6_LASTBRANCHTOIP (0x000001DC)
1071 @param EAX Lower 32-bits of MSR value.
1072 @param EDX Upper 32-bits of MSR value.
1074 <b>Example usage</b>
1078 Msr = AsmReadMsr64 (MSR_P6_LASTBRANCHTOIP);
1079 AsmWriteMsr64 (MSR_P6_LASTBRANCHTOIP, Msr);
1081 @note MSR_P6_LASTBRANCHTOIP is defined as LASTBRANCHTOIP in SDM.
1083 #define MSR_P6_LASTBRANCHTOIP 0x000001DC
1088 @param ECX MSR_P6_LASTINTFROMIP (0x000001DD)
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_P6_LASTINTFROMIP);
1097 AsmWriteMsr64 (MSR_P6_LASTINTFROMIP, Msr);
1099 @note MSR_P6_LASTINTFROMIP is defined as LASTINTFROMIP in SDM.
1101 #define MSR_P6_LASTINTFROMIP 0x000001DD
1106 @param ECX MSR_P6_LASTINTTOIP (0x000001DE)
1107 @param EAX Lower 32-bits of MSR value.
1108 @param EDX Upper 32-bits of MSR value.
1110 <b>Example usage</b>
1114 Msr = AsmReadMsr64 (MSR_P6_LASTINTTOIP);
1115 AsmWriteMsr64 (MSR_P6_LASTINTTOIP, Msr);
1117 @note MSR_P6_LASTINTTOIP is defined as LASTINTTOIP in SDM.
1119 #define MSR_P6_LASTINTTOIP 0x000001DE
1124 @param ECX MSR_P6_MTRRPHYSBASEn
1125 @param EAX Lower 32-bits of MSR value.
1126 @param EDX Upper 32-bits of MSR value.
1128 <b>Example usage</b>
1132 Msr = AsmReadMsr64 (MSR_P6_MTRRPHYSBASE0);
1133 AsmWriteMsr64 (MSR_P6_MTRRPHYSBASE0, Msr);
1135 @note MSR_P6_MTRRPHYSBASE0 is defined as MTRRPHYSBASE0 in SDM.
1136 MSR_P6_MTRRPHYSBASE1 is defined as MTRRPHYSBASE1 in SDM.
1137 MSR_P6_MTRRPHYSBASE2 is defined as MTRRPHYSBASE2 in SDM.
1138 MSR_P6_MTRRPHYSBASE3 is defined as MTRRPHYSBASE3 in SDM.
1139 MSR_P6_MTRRPHYSBASE4 is defined as MTRRPHYSBASE4 in SDM.
1140 MSR_P6_MTRRPHYSBASE5 is defined as MTRRPHYSBASE5 in SDM.
1141 MSR_P6_MTRRPHYSBASE6 is defined as MTRRPHYSBASE6 in SDM.
1142 MSR_P6_MTRRPHYSBASE7 is defined as MTRRPHYSBASE7 in SDM.
1145 #define MSR_P6_MTRRPHYSBASE0 0x00000200
1146 #define MSR_P6_MTRRPHYSBASE1 0x00000202
1147 #define MSR_P6_MTRRPHYSBASE2 0x00000204
1148 #define MSR_P6_MTRRPHYSBASE3 0x00000206
1149 #define MSR_P6_MTRRPHYSBASE4 0x00000208
1150 #define MSR_P6_MTRRPHYSBASE5 0x0000020A
1151 #define MSR_P6_MTRRPHYSBASE6 0x0000020C
1152 #define MSR_P6_MTRRPHYSBASE7 0x0000020E
1158 @param ECX MSR_P6_MTRRPHYSMASKn
1159 @param EAX Lower 32-bits of MSR value.
1160 @param EDX Upper 32-bits of MSR value.
1162 <b>Example usage</b>
1166 Msr = AsmReadMsr64 (MSR_P6_MTRRPHYSMASK0);
1167 AsmWriteMsr64 (MSR_P6_MTRRPHYSMASK0, Msr);
1169 @note MSR_P6_MTRRPHYSMASK0 is defined as MTRRPHYSMASK0 in SDM.
1170 MSR_P6_MTRRPHYSMASK1 is defined as MTRRPHYSMASK1 in SDM.
1171 MSR_P6_MTRRPHYSMASK2 is defined as MTRRPHYSMASK2 in SDM.
1172 MSR_P6_MTRRPHYSMASK3 is defined as MTRRPHYSMASK3 in SDM.
1173 MSR_P6_MTRRPHYSMASK4 is defined as MTRRPHYSMASK4 in SDM.
1174 MSR_P6_MTRRPHYSMASK5 is defined as MTRRPHYSMASK5 in SDM.
1175 MSR_P6_MTRRPHYSMASK6 is defined as MTRRPHYSMASK6 in SDM.
1176 MSR_P6_MTRRPHYSMASK7 is defined as MTRRPHYSMASK7 in SDM.
1179 #define MSR_P6_MTRRPHYSMASK0 0x00000201
1180 #define MSR_P6_MTRRPHYSMASK1 0x00000203
1181 #define MSR_P6_MTRRPHYSMASK2 0x00000205
1182 #define MSR_P6_MTRRPHYSMASK3 0x00000207
1183 #define MSR_P6_MTRRPHYSMASK4 0x00000209
1184 #define MSR_P6_MTRRPHYSMASK5 0x0000020B
1185 #define MSR_P6_MTRRPHYSMASK6 0x0000020D
1186 #define MSR_P6_MTRRPHYSMASK7 0x0000020F
1192 @param ECX MSR_P6_MTRRFIX64K_00000 (0x00000250)
1193 @param EAX Lower 32-bits of MSR value.
1194 @param EDX Upper 32-bits of MSR value.
1196 <b>Example usage</b>
1200 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX64K_00000);
1201 AsmWriteMsr64 (MSR_P6_MTRRFIX64K_00000, Msr);
1203 @note MSR_P6_MTRRFIX64K_00000 is defined as MTRRFIX64K_00000 in SDM.
1205 #define MSR_P6_MTRRFIX64K_00000 0x00000250
1210 @param ECX MSR_P6_MTRRFIX16K_80000 (0x00000258)
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_P6_MTRRFIX16K_80000);
1219 AsmWriteMsr64 (MSR_P6_MTRRFIX16K_80000, Msr);
1221 @note MSR_P6_MTRRFIX16K_80000 is defined as MTRRFIX16K_80000 in SDM.
1223 #define MSR_P6_MTRRFIX16K_80000 0x00000258
1228 @param ECX MSR_P6_MTRRFIX16K_A0000 (0x00000259)
1229 @param EAX Lower 32-bits of MSR value.
1230 @param EDX Upper 32-bits of MSR value.
1232 <b>Example usage</b>
1236 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX16K_A0000);
1237 AsmWriteMsr64 (MSR_P6_MTRRFIX16K_A0000, Msr);
1239 @note MSR_P6_MTRRFIX16K_A0000 is defined as MTRRFIX16K_A0000 in SDM.
1241 #define MSR_P6_MTRRFIX16K_A0000 0x00000259
1246 @param ECX MSR_P6_MTRRFIX4K_C0000 (0x00000268)
1247 @param EAX Lower 32-bits of MSR value.
1248 @param EDX Upper 32-bits of MSR value.
1250 <b>Example usage</b>
1254 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_C0000);
1255 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_C0000, Msr);
1257 @note MSR_P6_MTRRFIX4K_C0000 is defined as MTRRFIX4K_C0000 in SDM.
1259 #define MSR_P6_MTRRFIX4K_C0000 0x00000268
1264 @param ECX MSR_P6_MTRRFIX4K_C8000 (0x00000269)
1265 @param EAX Lower 32-bits of MSR value.
1266 @param EDX Upper 32-bits of MSR value.
1268 <b>Example usage</b>
1272 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_C8000);
1273 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_C8000, Msr);
1275 @note MSR_P6_MTRRFIX4K_C8000 is defined as MTRRFIX4K_C8000 in SDM.
1277 #define MSR_P6_MTRRFIX4K_C8000 0x00000269
1282 @param ECX MSR_P6_MTRRFIX4K_D0000 (0x0000026A)
1283 @param EAX Lower 32-bits of MSR value.
1284 @param EDX Upper 32-bits of MSR value.
1286 <b>Example usage</b>
1290 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_D0000);
1291 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_D0000, Msr);
1293 @note MSR_P6_MTRRFIX4K_D0000 is defined as MTRRFIX4K_D0000 in SDM.
1295 #define MSR_P6_MTRRFIX4K_D0000 0x0000026A
1300 @param ECX MSR_P6_MTRRFIX4K_D8000 (0x0000026B)
1301 @param EAX Lower 32-bits of MSR value.
1302 @param EDX Upper 32-bits of MSR value.
1304 <b>Example usage</b>
1308 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_D8000);
1309 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_D8000, Msr);
1311 @note MSR_P6_MTRRFIX4K_D8000 is defined as MTRRFIX4K_D8000 in SDM.
1313 #define MSR_P6_MTRRFIX4K_D8000 0x0000026B
1318 @param ECX MSR_P6_MTRRFIX4K_E0000 (0x0000026C)
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_E0000);
1327 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_E0000, Msr);
1329 @note MSR_P6_MTRRFIX4K_E0000 is defined as MTRRFIX4K_E0000 in SDM.
1331 #define MSR_P6_MTRRFIX4K_E0000 0x0000026C
1336 @param ECX MSR_P6_MTRRFIX4K_E8000 (0x0000026D)
1337 @param EAX Lower 32-bits of MSR value.
1338 @param EDX Upper 32-bits of MSR value.
1340 <b>Example usage</b>
1344 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_E8000);
1345 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_E8000, Msr);
1347 @note MSR_P6_MTRRFIX4K_E8000 is defined as MTRRFIX4K_E8000 in SDM.
1349 #define MSR_P6_MTRRFIX4K_E8000 0x0000026D
1354 @param ECX MSR_P6_MTRRFIX4K_F0000 (0x0000026E)
1355 @param EAX Lower 32-bits of MSR value.
1356 @param EDX Upper 32-bits of MSR value.
1358 <b>Example usage</b>
1362 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_F0000);
1363 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_F0000, Msr);
1365 @note MSR_P6_MTRRFIX4K_F0000 is defined as MTRRFIX4K_F0000 in SDM.
1367 #define MSR_P6_MTRRFIX4K_F0000 0x0000026E
1372 @param ECX MSR_P6_MTRRFIX4K_F8000 (0x0000026F)
1373 @param EAX Lower 32-bits of MSR value.
1374 @param EDX Upper 32-bits of MSR value.
1376 <b>Example usage</b>
1380 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_F8000);
1381 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_F8000, Msr);
1383 @note MSR_P6_MTRRFIX4K_F8000 is defined as MTRRFIX4K_F8000 in SDM.
1385 #define MSR_P6_MTRRFIX4K_F8000 0x0000026F
1390 @param ECX MSR_P6_MTRRDEFTYPE (0x000002FF)
1391 @param EAX Lower 32-bits of MSR value.
1392 Described by the type MSR_P6_MTRRDEFTYPE_REGISTER.
1393 @param EDX Upper 32-bits of MSR value.
1394 Described by the type MSR_P6_MTRRDEFTYPE_REGISTER.
1396 <b>Example usage</b>
1398 MSR_P6_MTRRDEFTYPE_REGISTER Msr;
1400 Msr.Uint64 = AsmReadMsr64 (MSR_P6_MTRRDEFTYPE);
1401 AsmWriteMsr64 (MSR_P6_MTRRDEFTYPE, Msr.Uint64);
1403 @note MSR_P6_MTRRDEFTYPE is defined as MTRRDEFTYPE in SDM.
1405 #define MSR_P6_MTRRDEFTYPE 0x000002FF
1408 MSR information returned for MSR index #MSR_P6_MTRRDEFTYPE
1412 /// Individual bit fields
1416 /// [Bits 2:0] Default memory type.
1419 UINT32 Reserved1
: 7;
1421 /// [Bit 10] Fixed MTRR enable.
1425 /// [Bit 11] MTRR Enable.
1428 UINT32 Reserved2
: 20;
1429 UINT32 Reserved3
: 32;
1432 /// All bit fields as a 32-bit value
1436 /// All bit fields as a 64-bit value
1439 } MSR_P6_MTRRDEFTYPE_REGISTER
;
1444 @param ECX MSR_P6_MC0_CTL (0x00000400)
1445 @param EAX Lower 32-bits of MSR value.
1446 @param EDX Upper 32-bits of MSR value.
1448 <b>Example usage</b>
1452 Msr = AsmReadMsr64 (MSR_P6_MC0_CTL);
1453 AsmWriteMsr64 (MSR_P6_MC0_CTL, Msr);
1455 @note MSR_P6_MC0_CTL is defined as MC0_CTL in SDM.
1456 MSR_P6_MC1_CTL is defined as MC1_CTL in SDM.
1457 MSR_P6_MC2_CTL is defined as MC2_CTL in SDM.
1458 MSR_P6_MC3_CTL is defined as MC3_CTL in SDM.
1459 MSR_P6_MC4_CTL is defined as MC4_CTL in SDM.
1462 #define MSR_P6_MC0_CTL 0x00000400
1463 #define MSR_P6_MC1_CTL 0x00000404
1464 #define MSR_P6_MC2_CTL 0x00000408
1465 #define MSR_P6_MC3_CTL 0x00000410
1466 #define MSR_P6_MC4_CTL 0x0000040C
1471 Bit definitions for MSR_P6_MC4_STATUS are the same as MSR_P6_MC0_STATUS,
1472 except bits 0, 4, 57, and 61 are hardcoded to 1.
1474 @param ECX MSR_P6_MCn_STATUS
1475 @param EAX Lower 32-bits of MSR value.
1476 Described by the type MSR_P6_MC_STATUS_REGISTER.
1477 @param EDX Upper 32-bits of MSR value.
1478 Described by the type MSR_P6_MC_STATUS_REGISTER.
1480 <b>Example usage</b>
1482 MSR_P6_MC_STATUS_REGISTER Msr;
1484 Msr.Uint64 = AsmReadMsr64 (MSR_P6_MC0_STATUS);
1485 AsmWriteMsr64 (MSR_P6_MC0_STATUS, Msr.Uint64);
1487 @note MSR_P6_MC0_STATUS is defined as MC0_STATUS in SDM.
1488 MSR_P6_MC1_STATUS is defined as MC1_STATUS in SDM.
1489 MSR_P6_MC2_STATUS is defined as MC2_STATUS in SDM.
1490 MSR_P6_MC3_STATUS is defined as MC3_STATUS in SDM.
1491 MSR_P6_MC4_STATUS is defined as MC4_STATUS in SDM.
1494 #define MSR_P6_MC0_STATUS 0x00000401
1495 #define MSR_P6_MC1_STATUS 0x00000405
1496 #define MSR_P6_MC2_STATUS 0x00000409
1497 #define MSR_P6_MC3_STATUS 0x00000411
1498 #define MSR_P6_MC4_STATUS 0x0000040D
1502 MSR information returned for MSR index #MSR_P6_MC0_STATUS to
1507 /// Individual bit fields
1511 /// [Bits 15:0] MC_STATUS_MCACOD.
1513 UINT32 MC_STATUS_MCACOD
: 16;
1515 /// [Bits 31:16] MC_STATUS_MSCOD.
1517 UINT32 MC_STATUS_MSCOD
: 16;
1518 UINT32 Reserved
: 25;
1520 /// [Bit 57] MC_STATUS_DAM.
1522 UINT32 MC_STATUS_DAM
: 1;
1524 /// [Bit 58] MC_STATUS_ADDRV.
1526 UINT32 MC_STATUS_ADDRV
: 1;
1528 /// [Bit 59] MC_STATUS_MISCV.
1530 UINT32 MC_STATUS_MISCV
: 1;
1532 /// [Bit 60] MC_STATUS_EN. (Note: For MC0_STATUS only, this bit is
1533 /// hardcoded to 1.).
1535 UINT32 MC_STATUS_EN
: 1;
1537 /// [Bit 61] MC_STATUS_UC.
1539 UINT32 MC_STATUS_UC
: 1;
1541 /// [Bit 62] MC_STATUS_O.
1543 UINT32 MC_STATUS_O
: 1;
1545 /// [Bit 63] MC_STATUS_V.
1547 UINT32 MC_STATUS_V
: 1;
1550 /// All bit fields as a 64-bit value
1553 } MSR_P6_MC_STATUS_REGISTER
;
1557 MSR_P6_MC4_ADDR is defined in MCA architecture but not implemented in P6 Family processors.
1559 @param ECX MSR_P6_MC0_ADDR (0x00000402)
1560 @param EAX Lower 32-bits of MSR value.
1561 @param EDX Upper 32-bits of MSR value.
1563 <b>Example usage</b>
1567 Msr = AsmReadMsr64 (MSR_P6_MC0_ADDR);
1568 AsmWriteMsr64 (MSR_P6_MC0_ADDR, Msr);
1570 @note MSR_P6_MC0_ADDR is defined as MC0_ADDR in SDM.
1571 MSR_P6_MC1_ADDR is defined as MC1_ADDR in SDM.
1572 MSR_P6_MC2_ADDR is defined as MC2_ADDR in SDM.
1573 MSR_P6_MC3_ADDR is defined as MC3_ADDR in SDM.
1574 MSR_P6_MC4_ADDR is defined as MC4_ADDR in SDM.
1577 #define MSR_P6_MC0_ADDR 0x00000402
1578 #define MSR_P6_MC1_ADDR 0x00000406
1579 #define MSR_P6_MC2_ADDR 0x0000040A
1580 #define MSR_P6_MC3_ADDR 0x00000412
1581 #define MSR_P6_MC4_ADDR 0x0000040E
1585 Defined in MCA architecture but not implemented in the P6 family processors.
1587 @param ECX MSR_P6_MC0_MISC (0x00000403)
1588 @param EAX Lower 32-bits of MSR value.
1589 @param EDX Upper 32-bits of MSR value.
1591 <b>Example usage</b>
1595 Msr = AsmReadMsr64 (MSR_P6_MC0_MISC);
1596 AsmWriteMsr64 (MSR_P6_MC0_MISC, Msr);
1598 @note MSR_P6_MC0_MISC is defined as MC0_MISC in SDM.
1599 MSR_P6_MC1_MISC is defined as MC1_MISC in SDM.
1600 MSR_P6_MC2_MISC is defined as MC2_MISC in SDM.
1601 MSR_P6_MC3_MISC is defined as MC3_MISC in SDM.
1602 MSR_P6_MC4_MISC is defined as MC4_MISC in SDM.
1605 #define MSR_P6_MC0_MISC 0x00000403
1606 #define MSR_P6_MC1_MISC 0x00000407
1607 #define MSR_P6_MC2_MISC 0x0000040B
1608 #define MSR_P6_MC3_MISC 0x00000413
1609 #define MSR_P6_MC4_MISC 0x0000040F