]> git.proxmox.com Git - mirror_edk2.git/blame - UefiCpuPkg/Include/Register/Msr/P6Msr.h
UefiCpuPkg/Include: Update MSR header files with SDM (Sep.2016)
[mirror_edk2.git] / UefiCpuPkg / Include / Register / Msr / P6Msr.h
CommitLineData
8e6bff88
MK
1/** @file\r
2 MSR Definitions for P6 Family Processors.\r
3\r
4 Provides defines for Machine Specific Registers(MSR) indexes. Data structures\r
5 are provided for MSRs that contain one or more bit fields. If the MSR value\r
6 returned is a single 32-bit or 64-bit value, then a data structure is not\r
7 provided for that MSR.\r
8\r
9 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
10 This program and the accompanying materials\r
11 are licensed and made available under the terms and conditions of the BSD License\r
12 which accompanies this distribution. The full text of the license may be found at\r
13 http://opensource.org/licenses/bsd-license.php\r
14\r
15 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
16 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
17\r
18 @par Specification Reference:\r
19 Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,\r
0f16be6d 20 September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.21.\r
8e6bff88
MK
21\r
22**/\r
23\r
24#ifndef __P6_MSR_H__\r
25#define __P6_MSR_H__\r
26\r
27#include <Register/ArchitecturalMsr.h>\r
28\r
29/**\r
0f16be6d 30 See Section 35.22, "MSRs in Pentium Processors.".\r
8e6bff88
MK
31\r
32 @param ECX MSR_P6_P5_MC_ADDR (0x00000000)\r
33 @param EAX Lower 32-bits of MSR value.\r
34 @param EDX Upper 32-bits of MSR value.\r
35\r
36 <b>Example usage</b>\r
37 @code\r
38 UINT64 Msr;\r
39\r
40 Msr = AsmReadMsr64 (MSR_P6_P5_MC_ADDR);\r
41 AsmWriteMsr64 (MSR_P6_P5_MC_ADDR, Msr);\r
42 @endcode\r
91e3003c 43 @note MSR_P6_P5_MC_ADDR is defined as P5_MC_ADDR in SDM.\r
8e6bff88
MK
44**/\r
45#define MSR_P6_P5_MC_ADDR 0x00000000\r
46\r
47\r
48/**\r
0f16be6d 49 See Section 35.22, "MSRs in Pentium Processors.".\r
8e6bff88
MK
50\r
51 @param ECX MSR_P6_P5_MC_TYPE (0x00000001)\r
52 @param EAX Lower 32-bits of MSR value.\r
53 @param EDX Upper 32-bits of MSR value.\r
54\r
55 <b>Example usage</b>\r
56 @code\r
57 UINT64 Msr;\r
58\r
59 Msr = AsmReadMsr64 (MSR_P6_P5_MC_TYPE);\r
60 AsmWriteMsr64 (MSR_P6_P5_MC_TYPE, Msr);\r
61 @endcode\r
91e3003c 62 @note MSR_P6_P5_MC_TYPE is defined as P5_MC_TYPE in SDM.\r
8e6bff88
MK
63**/\r
64#define MSR_P6_P5_MC_TYPE 0x00000001\r
65\r
66\r
67/**\r
68 See Section 17.14, "Time-Stamp Counter.".\r
69\r
70 @param ECX MSR_P6_TSC (0x00000010)\r
71 @param EAX Lower 32-bits of MSR value.\r
72 @param EDX Upper 32-bits of MSR value.\r
73\r
74 <b>Example usage</b>\r
75 @code\r
76 UINT64 Msr;\r
77\r
78 Msr = AsmReadMsr64 (MSR_P6_TSC);\r
79 AsmWriteMsr64 (MSR_P6_TSC, Msr);\r
80 @endcode\r
91e3003c 81 @note MSR_P6_TSC is defined as TSC in SDM.\r
8e6bff88
MK
82**/\r
83#define MSR_P6_TSC 0x00000010\r
84\r
85\r
86/**\r
87 Platform ID (R) The operating system can use this MSR to determine "slot"\r
88 information for the processor and the proper microcode update to load.\r
89\r
90 @param ECX MSR_P6_IA32_PLATFORM_ID (0x00000017)\r
91 @param EAX Lower 32-bits of MSR value.\r
92 Described by the type MSR_P6_IA32_PLATFORM_ID_REGISTER.\r
93 @param EDX Upper 32-bits of MSR value.\r
94 Described by the type MSR_P6_IA32_PLATFORM_ID_REGISTER.\r
95\r
96 <b>Example usage</b>\r
97 @code\r
98 MSR_P6_IA32_PLATFORM_ID_REGISTER Msr;\r
99\r
100 Msr.Uint64 = AsmReadMsr64 (MSR_P6_IA32_PLATFORM_ID);\r
101 @endcode\r
91e3003c 102 @note MSR_P6_IA32_PLATFORM_ID is defined as IA32_PLATFORM_ID in SDM.\r
8e6bff88
MK
103**/\r
104#define MSR_P6_IA32_PLATFORM_ID 0x00000017\r
105\r
106/**\r
107 MSR information returned for MSR index #MSR_P6_IA32_PLATFORM_ID\r
108**/\r
109typedef union {\r
110 ///\r
111 /// Individual bit fields\r
112 ///\r
113 struct {\r
114 UINT32 Reserved1:32;\r
115 UINT32 Reserved2:18;\r
116 ///\r
117 /// [Bits 52:50] Platform Id (R) Contains information concerning the\r
118 /// intended platform for the processor.\r
119 ///\r
120 /// 52 51 50\r
121 /// 0 0 0 Processor Flag 0.\r
122 /// 0 0 1 Processor Flag 1\r
123 /// 0 1 0 Processor Flag 2\r
124 /// 0 1 1 Processor Flag 3\r
125 /// 1 0 0 Processor Flag 4\r
126 /// 1 0 1 Processor Flag 5\r
127 /// 1 1 0 Processor Flag 6\r
128 /// 1 1 1 Processor Flag 7\r
129 ///\r
130 UINT32 PlatformId:3;\r
131 ///\r
132 /// [Bits 56:53] L2 Cache Latency Read.\r
133 ///\r
134 UINT32 L2CacheLatencyRead:4;\r
135 UINT32 Reserved3:3;\r
136 ///\r
137 /// [Bit 60] Clock Frequency Ratio Read.\r
138 ///\r
139 UINT32 ClockFrequencyRatioRead:1;\r
140 UINT32 Reserved4:3;\r
141 } Bits;\r
142 ///\r
143 /// All bit fields as a 64-bit value\r
144 ///\r
145 UINT64 Uint64;\r
146} MSR_P6_IA32_PLATFORM_ID_REGISTER;\r
147\r
148\r
149/**\r
150 Section 10.4.4, "Local APIC Status and Location.".\r
151\r
152 @param ECX MSR_P6_APIC_BASE (0x0000001B)\r
153 @param EAX Lower 32-bits of MSR value.\r
154 Described by the type MSR_P6_APIC_BASE_REGISTER.\r
155 @param EDX Upper 32-bits of MSR value.\r
156 Described by the type MSR_P6_APIC_BASE_REGISTER.\r
157\r
158 <b>Example usage</b>\r
159 @code\r
160 MSR_P6_APIC_BASE_REGISTER Msr;\r
161\r
162 Msr.Uint64 = AsmReadMsr64 (MSR_P6_APIC_BASE);\r
163 AsmWriteMsr64 (MSR_P6_APIC_BASE, Msr.Uint64);\r
164 @endcode\r
91e3003c 165 @note MSR_P6_APIC_BASE is defined as APIC_BASE in SDM.\r
8e6bff88
MK
166**/\r
167#define MSR_P6_APIC_BASE 0x0000001B\r
168\r
169/**\r
170 MSR information returned for MSR index #MSR_P6_APIC_BASE\r
171**/\r
172typedef union {\r
173 ///\r
174 /// Individual bit fields\r
175 ///\r
176 struct {\r
177 UINT32 Reserved1:8;\r
178 ///\r
179 /// [Bit 8] Boot Strap Processor indicator Bit 1 = BSP.\r
180 ///\r
181 UINT32 BSP:1;\r
182 UINT32 Reserved2:2;\r
183 ///\r
184 /// [Bit 11] APIC Global Enable Bit - Permanent till reset 1 = Enabled 0 =\r
185 /// Disabled.\r
186 ///\r
187 UINT32 EN:1;\r
188 ///\r
189 /// [Bits 31:12] APIC Base Address.\r
190 ///\r
191 UINT32 ApicBase:20;\r
192 UINT32 Reserved3:32;\r
193 } Bits;\r
194 ///\r
195 /// All bit fields as a 32-bit value\r
196 ///\r
197 UINT32 Uint32;\r
198 ///\r
199 /// All bit fields as a 64-bit value\r
200 ///\r
201 UINT64 Uint64;\r
202} MSR_P6_APIC_BASE_REGISTER;\r
203\r
204\r
205/**\r
206 Processor Hard Power-On Configuration (R/W) Enables and disables processor\r
207 features; (R) indicates current processor configuration.\r
208\r
209 @param ECX MSR_P6_EBL_CR_POWERON (0x0000002A)\r
210 @param EAX Lower 32-bits of MSR value.\r
211 Described by the type MSR_P6_EBL_CR_POWERON_REGISTER.\r
212 @param EDX Upper 32-bits of MSR value.\r
213 Described by the type MSR_P6_EBL_CR_POWERON_REGISTER.\r
214\r
215 <b>Example usage</b>\r
216 @code\r
217 MSR_P6_EBL_CR_POWERON_REGISTER Msr;\r
218\r
219 Msr.Uint64 = AsmReadMsr64 (MSR_P6_EBL_CR_POWERON);\r
220 AsmWriteMsr64 (MSR_P6_EBL_CR_POWERON, Msr.Uint64);\r
221 @endcode\r
91e3003c 222 @note MSR_P6_EBL_CR_POWERON is defined as EBL_CR_POWERON in SDM.\r
8e6bff88
MK
223**/\r
224#define MSR_P6_EBL_CR_POWERON 0x0000002A\r
225\r
226/**\r
227 MSR information returned for MSR index #MSR_P6_EBL_CR_POWERON\r
228**/\r
229typedef union {\r
230 ///\r
231 /// Individual bit fields\r
232 ///\r
233 struct {\r
234 UINT32 Reserved1:1;\r
235 ///\r
236 /// [Bit 1] Data Error Checking Enable (R/W) 1 = Enabled 0 = Disabled.\r
237 ///\r
238 UINT32 DataErrorCheckingEnable:1;\r
239 ///\r
240 /// [Bit 2] Response Error Checking Enable FRCERR Observation Enable (R/W)\r
241 /// 1 = Enabled 0 = Disabled.\r
242 ///\r
243 UINT32 ResponseErrorCheckingEnable:1;\r
244 ///\r
245 /// [Bit 3] AERR# Drive Enable (R/W) 1 = Enabled 0 = Disabled.\r
246 ///\r
247 UINT32 AERR_DriveEnable:1;\r
248 ///\r
249 /// [Bit 4] BERR# Enable for Initiator Bus Requests (R/W) 1 = Enabled 0 =\r
250 /// Disabled.\r
251 ///\r
252 UINT32 BERR_Enable:1;\r
253 UINT32 Reserved2:1;\r
254 ///\r
255 /// [Bit 6] BERR# Driver Enable for Initiator Internal Errors (R/W) 1 =\r
256 /// Enabled 0 = Disabled.\r
257 ///\r
258 UINT32 BERR_DriverEnable:1;\r
259 ///\r
260 /// [Bit 7] BINIT# Driver Enable (R/W) 1 = Enabled 0 = Disabled.\r
261 ///\r
262 UINT32 BINIT_DriverEnable:1;\r
263 ///\r
264 /// [Bit 8] Output Tri-state Enabled (R) 1 = Enabled 0 = Disabled.\r
265 ///\r
266 UINT32 OutputTriStateEnable:1;\r
267 ///\r
268 /// [Bit 9] Execute BIST (R) 1 = Enabled 0 = Disabled.\r
269 ///\r
270 UINT32 ExecuteBIST:1;\r
271 ///\r
272 /// [Bit 10] AERR# Observation Enabled (R) 1 = Enabled 0 = Disabled.\r
273 ///\r
274 UINT32 AERR_ObservationEnabled:1;\r
275 UINT32 Reserved3:1;\r
276 ///\r
277 /// [Bit 12] BINIT# Observation Enabled (R) 1 = Enabled 0 = Disabled.\r
278 ///\r
279 UINT32 BINIT_ObservationEnabled:1;\r
280 ///\r
281 /// [Bit 13] In Order Queue Depth (R) 1 = 1 0 = 8.\r
282 ///\r
283 UINT32 InOrderQueueDepth:1;\r
284 ///\r
285 /// [Bit 14] 1-MByte Power on Reset Vector (R) 1 = 1MByte 0 = 4GBytes.\r
286 ///\r
287 UINT32 ResetVector:1;\r
288 ///\r
289 /// [Bit 15] FRC Mode Enable (R) 1 = Enabled 0 = Disabled.\r
290 ///\r
291 UINT32 FRCModeEnable:1;\r
292 ///\r
293 /// [Bits 17:16] APIC Cluster ID (R).\r
294 ///\r
295 UINT32 APICClusterID:2;\r
296 ///\r
297 /// [Bits 19:18] System Bus Frequency (R) 00 = 66MHz 10 = 100Mhz 01 =\r
298 /// 133MHz 11 = Reserved.\r
299 ///\r
300 UINT32 SystemBusFrequency:2;\r
301 ///\r
302 /// [Bits 21:20] Symmetric Arbitration ID (R).\r
303 ///\r
304 UINT32 SymmetricArbitrationID:2;\r
305 ///\r
306 /// [Bits 25:22] Clock Frequency Ratio (R).\r
307 ///\r
308 UINT32 ClockFrequencyRatio:4;\r
309 ///\r
310 /// [Bit 26] Low Power Mode Enable (R/W).\r
311 ///\r
312 UINT32 LowPowerModeEnable:1;\r
313 ///\r
314 /// [Bit 27] Clock Frequency Ratio.\r
315 ///\r
316 UINT32 ClockFrequencyRatio1:1;\r
317 UINT32 Reserved4:4;\r
318 UINT32 Reserved5:32;\r
319 } Bits;\r
320 ///\r
321 /// All bit fields as a 32-bit value\r
322 ///\r
323 UINT32 Uint32;\r
324 ///\r
325 /// All bit fields as a 64-bit value\r
326 ///\r
327 UINT64 Uint64;\r
328} MSR_P6_EBL_CR_POWERON_REGISTER;\r
329\r
330\r
331/**\r
332 Test Control Register.\r
333\r
334 @param ECX MSR_P6_TEST_CTL (0x00000033)\r
335 @param EAX Lower 32-bits of MSR value.\r
336 Described by the type MSR_P6_TEST_CTL_REGISTER.\r
337 @param EDX Upper 32-bits of MSR value.\r
338 Described by the type MSR_P6_TEST_CTL_REGISTER.\r
339\r
340 <b>Example usage</b>\r
341 @code\r
342 MSR_P6_TEST_CTL_REGISTER Msr;\r
343\r
344 Msr.Uint64 = AsmReadMsr64 (MSR_P6_TEST_CTL);\r
345 AsmWriteMsr64 (MSR_P6_TEST_CTL, Msr.Uint64);\r
346 @endcode\r
91e3003c 347 @note MSR_P6_TEST_CTL is defined as TEST_CTL in SDM.\r
8e6bff88
MK
348**/\r
349#define MSR_P6_TEST_CTL 0x00000033\r
350\r
351/**\r
352 MSR information returned for MSR index #MSR_P6_TEST_CTL\r
353**/\r
354typedef union {\r
355 ///\r
356 /// Individual bit fields\r
357 ///\r
358 struct {\r
359 UINT32 Reserved1:30;\r
360 ///\r
361 /// [Bit 30] Streaming Buffer Disable.\r
362 ///\r
363 UINT32 StreamingBufferDisable:1;\r
364 ///\r
365 /// [Bit 31] Disable LOCK# Assertion for split locked access.\r
366 ///\r
367 UINT32 Disable_LOCK:1;\r
368 UINT32 Reserved2:32;\r
369 } Bits;\r
370 ///\r
371 /// All bit fields as a 32-bit value\r
372 ///\r
373 UINT32 Uint32;\r
374 ///\r
375 /// All bit fields as a 64-bit value\r
376 ///\r
377 UINT64 Uint64;\r
378} MSR_P6_TEST_CTL_REGISTER;\r
379\r
380\r
381/**\r
382 BIOS Update Trigger Register.\r
383\r
384 @param ECX MSR_P6_BIOS_UPDT_TRIG (0x00000079)\r
385 @param EAX Lower 32-bits of MSR value.\r
386 @param EDX Upper 32-bits of MSR value.\r
387\r
388 <b>Example usage</b>\r
389 @code\r
390 UINT64 Msr;\r
391\r
392 Msr = AsmReadMsr64 (MSR_P6_BIOS_UPDT_TRIG);\r
393 AsmWriteMsr64 (MSR_P6_BIOS_UPDT_TRIG, Msr);\r
394 @endcode\r
91e3003c 395 @note MSR_P6_BIOS_UPDT_TRIG is defined as BIOS_UPDT_TRIG in SDM.\r
8e6bff88
MK
396**/\r
397#define MSR_P6_BIOS_UPDT_TRIG 0x00000079\r
398\r
399\r
400/**\r
401 Chunk n data register D[63:0]: used to write to and read from the L2.\r
402\r
403 @param ECX MSR_P6_BBL_CR_Dn\r
404 @param EAX Lower 32-bits of MSR value.\r
405 @param EDX Upper 32-bits of MSR value.\r
406\r
407 <b>Example usage</b>\r
408 @code\r
409 UINT64 Msr;\r
410\r
411 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_D0);\r
412 AsmWriteMsr64 (MSR_P6_BBL_CR_D0, Msr);\r
413 @endcode\r
91e3003c
JF
414 @note MSR_P6_BBL_CR_D0 is defined as BBL_CR_D0 in SDM.\r
415 MSR_P6_BBL_CR_D1 is defined as BBL_CR_D1 in SDM.\r
416 MSR_P6_BBL_CR_D2 is defined as BBL_CR_D2 in SDM.\r
8e6bff88
MK
417 @{\r
418**/\r
419#define MSR_P6_BBL_CR_D0 0x00000088\r
420#define MSR_P6_BBL_CR_D1 0x00000089\r
421#define MSR_P6_BBL_CR_D2 0x0000008A\r
422/// @}\r
423\r
424\r
425/**\r
426 BIOS Update Signature Register or Chunk 3 data register D[63:0] Used to\r
427 write to and read from the L2 depending on the usage model.\r
428\r
429 @param ECX MSR_P6_BIOS_SIGN (0x0000008B)\r
430 @param EAX Lower 32-bits of MSR value.\r
431 @param EDX Upper 32-bits of MSR value.\r
432\r
433 <b>Example usage</b>\r
434 @code\r
435 UINT64 Msr;\r
436\r
437 Msr = AsmReadMsr64 (MSR_P6_BIOS_SIGN);\r
438 AsmWriteMsr64 (MSR_P6_BIOS_SIGN, Msr);\r
439 @endcode\r
91e3003c 440 @note MSR_P6_BIOS_SIGN is defined as BIOS_SIGN in SDM.\r
8e6bff88
MK
441**/\r
442#define MSR_P6_BIOS_SIGN 0x0000008B\r
443\r
444\r
445/**\r
446\r
447\r
448 @param ECX MSR_P6_PERFCTR0 (0x000000C1)\r
449 @param EAX Lower 32-bits of MSR value.\r
450 @param EDX Upper 32-bits of MSR value.\r
451\r
452 <b>Example usage</b>\r
453 @code\r
454 UINT64 Msr;\r
455\r
456 Msr = AsmReadMsr64 (MSR_P6_PERFCTR0);\r
457 AsmWriteMsr64 (MSR_P6_PERFCTR0, Msr);\r
458 @endcode\r
91e3003c
JF
459 @note MSR_P6_PERFCTR0 is defined as PERFCTR0 in SDM.\r
460 MSR_P6_PERFCTR1 is defined as PERFCTR1 in SDM.\r
8e6bff88
MK
461 @{\r
462**/\r
463#define MSR_P6_PERFCTR0 0x000000C1\r
464#define MSR_P6_PERFCTR1 0x000000C2\r
465/// @}\r
466\r
467\r
468/**\r
469\r
470\r
471 @param ECX MSR_P6_MTRRCAP (0x000000FE)\r
472 @param EAX Lower 32-bits of MSR value.\r
473 @param EDX Upper 32-bits of MSR value.\r
474\r
475 <b>Example usage</b>\r
476 @code\r
477 UINT64 Msr;\r
478\r
479 Msr = AsmReadMsr64 (MSR_P6_MTRRCAP);\r
480 AsmWriteMsr64 (MSR_P6_MTRRCAP, Msr);\r
481 @endcode\r
91e3003c 482 @note MSR_P6_MTRRCAP is defined as MTRRCAP in SDM.\r
8e6bff88
MK
483**/\r
484#define MSR_P6_MTRRCAP 0x000000FE\r
485\r
486\r
487/**\r
488 Address register: used to send specified address (A31-A3) to L2 during cache\r
489 initialization accesses.\r
490\r
491 @param ECX MSR_P6_BBL_CR_ADDR (0x00000116)\r
492 @param EAX Lower 32-bits of MSR value.\r
493 Described by the type MSR_P6_BBL_CR_ADDR_REGISTER.\r
494 @param EDX Upper 32-bits of MSR value.\r
495 Described by the type MSR_P6_BBL_CR_ADDR_REGISTER.\r
496\r
497 <b>Example usage</b>\r
498 @code\r
499 MSR_P6_BBL_CR_ADDR_REGISTER Msr;\r
500\r
501 Msr.Uint64 = AsmReadMsr64 (MSR_P6_BBL_CR_ADDR);\r
502 AsmWriteMsr64 (MSR_P6_BBL_CR_ADDR, Msr.Uint64);\r
503 @endcode\r
91e3003c 504 @note MSR_P6_BBL_CR_ADDR is defined as BBL_CR_ADDR in SDM.\r
8e6bff88
MK
505**/\r
506#define MSR_P6_BBL_CR_ADDR 0x00000116\r
507\r
508/**\r
509 MSR information returned for MSR index #MSR_P6_BBL_CR_ADDR\r
510**/\r
511typedef union {\r
512 ///\r
513 /// Individual bit fields\r
514 ///\r
515 struct {\r
516 UINT32 Reserved1:3;\r
517 ///\r
518 /// [Bits 31:3] Address bits\r
519 ///\r
520 UINT32 Address:29;\r
521 UINT32 Reserved2:32;\r
522 } Bits;\r
523 ///\r
524 /// All bit fields as a 32-bit value\r
525 ///\r
526 UINT32 Uint32;\r
527 ///\r
528 /// All bit fields as a 64-bit value\r
529 ///\r
530 UINT64 Uint64;\r
531} MSR_P6_BBL_CR_ADDR_REGISTER;\r
532\r
533\r
534/**\r
535 Data ECC register D[7:0]: used to write ECC and read ECC to/from L2.\r
536\r
537 @param ECX MSR_P6_BBL_CR_DECC (0x00000118)\r
538 @param EAX Lower 32-bits of MSR value.\r
539 @param EDX Upper 32-bits of MSR value.\r
540\r
541 <b>Example usage</b>\r
542 @code\r
543 UINT64 Msr;\r
544\r
545 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_DECC);\r
546 AsmWriteMsr64 (MSR_P6_BBL_CR_DECC, Msr);\r
547 @endcode\r
91e3003c 548 @note MSR_P6_BBL_CR_DECC is defined as BBL_CR_DECC in SDM.\r
8e6bff88
MK
549**/\r
550#define MSR_P6_BBL_CR_DECC 0x00000118\r
551\r
552\r
553/**\r
554 Control register: used to program L2 commands to be issued via cache\r
555 configuration accesses mechanism. Also receives L2 lookup response.\r
556\r
557 @param ECX MSR_P6_BBL_CR_CTL (0x00000119)\r
558 @param EAX Lower 32-bits of MSR value.\r
559 Described by the type MSR_P6_BBL_CR_CTL_REGISTER.\r
560 @param EDX Upper 32-bits of MSR value.\r
561 Described by the type MSR_P6_BBL_CR_CTL_REGISTER.\r
562\r
563 <b>Example usage</b>\r
564 @code\r
565 MSR_P6_BBL_CR_CTL_REGISTER Msr;\r
566\r
567 Msr.Uint64 = AsmReadMsr64 (MSR_P6_BBL_CR_CTL);\r
568 AsmWriteMsr64 (MSR_P6_BBL_CR_CTL, Msr.Uint64);\r
569 @endcode\r
91e3003c 570 @note MSR_P6_BBL_CR_CTL is defined as BBL_CR_CTL in SDM.\r
8e6bff88
MK
571**/\r
572#define MSR_P6_BBL_CR_CTL 0x00000119\r
573\r
574/**\r
575 MSR information returned for MSR index #MSR_P6_BBL_CR_CTL\r
576**/\r
577typedef union {\r
578 ///\r
579 /// Individual bit fields\r
580 ///\r
581 struct {\r
582 ///\r
583 /// [Bits 4:0] L2 Command\r
584 /// Data Read w/ LRU update (RLU)\r
585 /// Tag Read w/ Data Read (TRR)\r
586 /// Tag Inquire (TI)\r
587 /// L2 Control Register Read (CR)\r
588 /// L2 Control Register Write (CW)\r
589 /// Tag Write w/ Data Read (TWR)\r
590 /// Tag Write w/ Data Write (TWW)\r
591 /// Tag Write (TW).\r
592 ///\r
593 UINT32 L2Command:5;\r
594 ///\r
595 /// [Bits 6:5] State to L2\r
596 ///\r
597 UINT32 StateToL2:2;\r
598 UINT32 Reserved:1;\r
599 ///\r
600 /// [Bits 9:8] Way to L2.\r
601 ///\r
602 UINT32 WayToL2:2;\r
603 ///\r
604 /// [Bits 11:10] Way 0 - 00, Way 1 - 01, Way 2 - 10, Way 3 - 11.\r
605 ///\r
606 UINT32 Way:2;\r
607 ///\r
608 /// [Bits 13:12] Modified - 11,Exclusive - 10, Shared - 01, Invalid - 00.\r
609 ///\r
610 UINT32 MESI:2;\r
611 ///\r
612 /// [Bits 15:14] State from L2.\r
613 ///\r
614 UINT32 StateFromL2:2;\r
615 UINT32 Reserved2:1;\r
616 ///\r
617 /// [Bit 17] L2 Hit.\r
618 ///\r
619 UINT32 L2Hit:1;\r
620 UINT32 Reserved3:1;\r
621 ///\r
622 /// [Bits 20:19] User supplied ECC.\r
623 ///\r
624 UINT32 UserEcc:2;\r
625 ///\r
626 /// [Bit 21] Processor number Disable = 1 Enable = 0 Reserved.\r
627 ///\r
628 UINT32 ProcessorNumber:1;\r
629 UINT32 Reserved4:10;\r
630 UINT32 Reserved5:32;\r
631 } Bits;\r
632 ///\r
633 /// All bit fields as a 32-bit value\r
634 ///\r
635 UINT32 Uint32;\r
636 ///\r
637 /// All bit fields as a 64-bit value\r
638 ///\r
639 UINT64 Uint64;\r
640} MSR_P6_BBL_CR_CTL_REGISTER;\r
641\r
642\r
643/**\r
644 Trigger register: used to initiate a cache configuration accesses access,\r
645 Write only with Data = 0.\r
646\r
647 @param ECX MSR_P6_BBL_CR_TRIG (0x0000011A)\r
648 @param EAX Lower 32-bits of MSR value.\r
649 @param EDX Upper 32-bits of MSR value.\r
650\r
651 <b>Example usage</b>\r
652 @code\r
653 UINT64 Msr;\r
654\r
655 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_TRIG);\r
656 AsmWriteMsr64 (MSR_P6_BBL_CR_TRIG, Msr);\r
657 @endcode\r
91e3003c 658 @note MSR_P6_BBL_CR_TRIG is defined as BBL_CR_TRIG in SDM.\r
8e6bff88
MK
659**/\r
660#define MSR_P6_BBL_CR_TRIG 0x0000011A\r
661\r
662\r
663/**\r
664 Busy register: indicates when a cache configuration accesses L2 command is\r
665 in progress. D[0] = 1 = BUSY.\r
666\r
667 @param ECX MSR_P6_BBL_CR_BUSY (0x0000011B)\r
668 @param EAX Lower 32-bits of MSR value.\r
669 @param EDX Upper 32-bits of MSR value.\r
670\r
671 <b>Example usage</b>\r
672 @code\r
673 UINT64 Msr;\r
674\r
675 Msr = AsmReadMsr64 (MSR_P6_BBL_CR_BUSY);\r
676 AsmWriteMsr64 (MSR_P6_BBL_CR_BUSY, Msr);\r
677 @endcode\r
91e3003c 678 @note MSR_P6_BBL_CR_BUSY is defined as BBL_CR_BUSY in SDM.\r
8e6bff88
MK
679**/\r
680#define MSR_P6_BBL_CR_BUSY 0x0000011B\r
681\r
682\r
683/**\r
684 Control register 3: used to configure the L2 Cache.\r
685\r
686 @param ECX MSR_P6_BBL_CR_CTL3 (0x0000011E)\r
687 @param EAX Lower 32-bits of MSR value.\r
688 Described by the type MSR_P6_BBL_CR_CTL3_REGISTER.\r
689 @param EDX Upper 32-bits of MSR value.\r
690 Described by the type MSR_P6_BBL_CR_CTL3_REGISTER.\r
691\r
692 <b>Example usage</b>\r
693 @code\r
694 MSR_P6_BBL_CR_CTL3_REGISTER Msr;\r
695\r
696 Msr.Uint64 = AsmReadMsr64 (MSR_P6_BBL_CR_CTL3);\r
697 AsmWriteMsr64 (MSR_P6_BBL_CR_CTL3, Msr.Uint64);\r
698 @endcode\r
91e3003c 699 @note MSR_P6_BBL_CR_CTL3 is defined as BBL_CR_CTL3 in SDM.\r
8e6bff88
MK
700**/\r
701#define MSR_P6_BBL_CR_CTL3 0x0000011E\r
702\r
703/**\r
704 MSR information returned for MSR index #MSR_P6_BBL_CR_CTL3\r
705**/\r
706typedef union {\r
707 ///\r
708 /// Individual bit fields\r
709 ///\r
710 struct {\r
711 ///\r
712 /// [Bit 0] L2 Configured (read/write ).\r
713 ///\r
714 UINT32 L2Configured:1;\r
715 ///\r
716 /// [Bits 4:1] L2 Cache Latency (read/write).\r
717 ///\r
718 UINT32 L2CacheLatency:4;\r
719 ///\r
720 /// [Bit 5] ECC Check Enable (read/write).\r
721 ///\r
722 UINT32 ECCCheckEnable:1;\r
723 ///\r
724 /// [Bit 6] Address Parity Check Enable (read/write).\r
725 ///\r
726 UINT32 AddressParityCheckEnable:1;\r
727 ///\r
728 /// [Bit 7] CRTN Parity Check Enable (read/write).\r
729 ///\r
730 UINT32 CRTNParityCheckEnable:1;\r
731 ///\r
732 /// [Bit 8] L2 Enabled (read/write).\r
733 ///\r
734 UINT32 L2Enabled:1;\r
735 ///\r
736 /// [Bits 10:9] L2 Associativity (read only) Direct Mapped 2 Way 4 Way\r
737 /// Reserved.\r
738 ///\r
739 UINT32 L2Associativity:2;\r
740 ///\r
741 /// [Bits 12:11] Number of L2 banks (read only).\r
742 ///\r
743 UINT32 L2Banks:2;\r
744 ///\r
745 /// [Bits 17:13] Cache size per bank (read/write) 256KBytes 512KBytes\r
746 /// 1MByte 2MByte 4MBytes.\r
747 ///\r
748 UINT32 CacheSizePerBank:5;\r
749 ///\r
750 /// [Bit 18] Cache State error checking enable (read/write).\r
751 ///\r
752 UINT32 CacheStateErrorEnable:1;\r
753 UINT32 Reserved1:1;\r
754 ///\r
755 /// [Bits 22:20] L2 Physical Address Range support 64GBytes 32GBytes\r
756 /// 16GBytes 8GBytes 4GBytes 2GBytes 1GBytes 512MBytes.\r
757 ///\r
758 UINT32 L2AddressRange:3;\r
759 ///\r
760 /// [Bit 23] L2 Hardware Disable (read only).\r
761 ///\r
762 UINT32 L2HardwareDisable:1;\r
763 UINT32 Reserved2:1;\r
764 ///\r
765 /// [Bit 25] Cache bus fraction (read only).\r
766 ///\r
767 UINT32 CacheBusFraction:1;\r
768 UINT32 Reserved3:6;\r
769 UINT32 Reserved4:32;\r
770 } Bits;\r
771 ///\r
772 /// All bit fields as a 32-bit value\r
773 ///\r
774 UINT32 Uint32;\r
775 ///\r
776 /// All bit fields as a 64-bit value\r
777 ///\r
778 UINT64 Uint64;\r
779} MSR_P6_BBL_CR_CTL3_REGISTER;\r
780\r
781\r
782/**\r
783 CS register target for CPL 0 code.\r
784\r
785 @param ECX MSR_P6_SYSENTER_CS_MSR (0x00000174)\r
786 @param EAX Lower 32-bits of MSR value.\r
787 @param EDX Upper 32-bits of MSR value.\r
788\r
789 <b>Example usage</b>\r
790 @code\r
791 UINT64 Msr;\r
792\r
793 Msr = AsmReadMsr64 (MSR_P6_SYSENTER_CS_MSR);\r
794 AsmWriteMsr64 (MSR_P6_SYSENTER_CS_MSR, Msr);\r
795 @endcode\r
91e3003c 796 @note MSR_P6_SYSENTER_CS_MSR is defined as SYSENTER_CS_MSR in SDM.\r
8e6bff88
MK
797**/\r
798#define MSR_P6_SYSENTER_CS_MSR 0x00000174\r
799\r
800\r
801/**\r
802 Stack pointer for CPL 0 stack.\r
803\r
804 @param ECX MSR_P6_SYSENTER_ESP_MSR (0x00000175)\r
805 @param EAX Lower 32-bits of MSR value.\r
806 @param EDX Upper 32-bits of MSR value.\r
807\r
808 <b>Example usage</b>\r
809 @code\r
810 UINT64 Msr;\r
811\r
812 Msr = AsmReadMsr64 (MSR_P6_SYSENTER_ESP_MSR);\r
813 AsmWriteMsr64 (MSR_P6_SYSENTER_ESP_MSR, Msr);\r
814 @endcode\r
91e3003c 815 @note MSR_P6_SYSENTER_ESP_MSR is defined as SYSENTER_ESP_MSR in SDM.\r
8e6bff88
MK
816**/\r
817#define MSR_P6_SYSENTER_ESP_MSR 0x00000175\r
818\r
819\r
820/**\r
821 CPL 0 code entry point.\r
822\r
823 @param ECX MSR_P6_SYSENTER_EIP_MSR (0x00000176)\r
824 @param EAX Lower 32-bits of MSR value.\r
825 @param EDX Upper 32-bits of MSR value.\r
826\r
827 <b>Example usage</b>\r
828 @code\r
829 UINT64 Msr;\r
830\r
831 Msr = AsmReadMsr64 (MSR_P6_SYSENTER_EIP_MSR);\r
832 AsmWriteMsr64 (MSR_P6_SYSENTER_EIP_MSR, Msr);\r
833 @endcode\r
91e3003c 834 @note MSR_P6_SYSENTER_EIP_MSR is defined as SYSENTER_EIP_MSR in SDM.\r
8e6bff88
MK
835**/\r
836#define MSR_P6_SYSENTER_EIP_MSR 0x00000176\r
837\r
838\r
839/**\r
840\r
841\r
842 @param ECX MSR_P6_MCG_CAP (0x00000179)\r
843 @param EAX Lower 32-bits of MSR value.\r
844 @param EDX Upper 32-bits of MSR value.\r
845\r
846 <b>Example usage</b>\r
847 @code\r
848 UINT64 Msr;\r
849\r
850 Msr = AsmReadMsr64 (MSR_P6_MCG_CAP);\r
851 AsmWriteMsr64 (MSR_P6_MCG_CAP, Msr);\r
852 @endcode\r
91e3003c 853 @note MSR_P6_MCG_CAP is defined as MCG_CAP in SDM.\r
8e6bff88
MK
854**/\r
855#define MSR_P6_MCG_CAP 0x00000179\r
856\r
857\r
858/**\r
859\r
860\r
861 @param ECX MSR_P6_MCG_STATUS (0x0000017A)\r
862 @param EAX Lower 32-bits of MSR value.\r
863 @param EDX Upper 32-bits of MSR value.\r
864\r
865 <b>Example usage</b>\r
866 @code\r
867 UINT64 Msr;\r
868\r
869 Msr = AsmReadMsr64 (MSR_P6_MCG_STATUS);\r
870 AsmWriteMsr64 (MSR_P6_MCG_STATUS, Msr);\r
871 @endcode\r
91e3003c 872 @note MSR_P6_MCG_STATUS is defined as MCG_STATUS in SDM.\r
8e6bff88
MK
873**/\r
874#define MSR_P6_MCG_STATUS 0x0000017A\r
875\r
876\r
877/**\r
878\r
879\r
880 @param ECX MSR_P6_MCG_CTL (0x0000017B)\r
881 @param EAX Lower 32-bits of MSR value.\r
882 @param EDX Upper 32-bits of MSR value.\r
883\r
884 <b>Example usage</b>\r
885 @code\r
886 UINT64 Msr;\r
887\r
888 Msr = AsmReadMsr64 (MSR_P6_MCG_CTL);\r
889 AsmWriteMsr64 (MSR_P6_MCG_CTL, Msr);\r
890 @endcode\r
91e3003c 891 @note MSR_P6_MCG_CTL is defined as MCG_CTL in SDM.\r
8e6bff88
MK
892**/\r
893#define MSR_P6_MCG_CTL 0x0000017B\r
894\r
895\r
896/**\r
897\r
898\r
899 @param ECX MSR_P6_PERFEVTSELn\r
900 @param EAX Lower 32-bits of MSR value.\r
901 Described by the type MSR_P6_PERFEVTSEL_REGISTER.\r
902 @param EDX Upper 32-bits of MSR value.\r
903 Described by the type MSR_P6_PERFEVTSEL_REGISTER.\r
904\r
905 <b>Example usage</b>\r
906 @code\r
907 MSR_P6_PERFEVTSEL_REGISTER Msr;\r
908\r
909 Msr.Uint64 = AsmReadMsr64 (MSR_P6_PERFEVTSEL0);\r
910 AsmWriteMsr64 (MSR_P6_PERFEVTSEL0, Msr.Uint64);\r
911 @endcode\r
91e3003c
JF
912 @note MSR_P6_PERFEVTSEL0 is defined as PERFEVTSEL0 in SDM.\r
913 MSR_P6_PERFEVTSEL1 is defined as PERFEVTSEL1 in SDM.\r
8e6bff88
MK
914 @{\r
915**/\r
916#define MSR_P6_PERFEVTSEL0 0x00000186\r
917#define MSR_P6_PERFEVTSEL1 0x00000187\r
918/// @}\r
919\r
920/**\r
921 MSR information returned for MSR indexes #MSR_P6_PERFEVTSEL0 and\r
922 #MSR_P6_PERFEVTSEL1.\r
923**/\r
924typedef union {\r
925 ///\r
926 /// Individual bit fields\r
927 ///\r
928 struct {\r
929 ///\r
930 /// [Bits 7:0] Event Select Refer to Performance Counter section for a\r
931 /// list of event encodings.\r
932 ///\r
933 UINT32 EventSelect:8;\r
934 ///\r
935 /// [Bits 15:8] UMASK (Unit Mask) Unit mask register set to 0 to enable\r
936 /// all count options.\r
937 ///\r
938 UINT32 UMASK:8;\r
939 ///\r
940 /// [Bit 16] USER Controls the counting of events at Privilege levels of\r
941 /// 1, 2, and 3.\r
942 ///\r
943 UINT32 USR:1;\r
944 ///\r
945 /// [Bit 17] OS Controls the counting of events at Privilege level of 0.\r
946 ///\r
947 UINT32 OS:1;\r
948 ///\r
949 /// [Bit 18] E Occurrence/Duration Mode Select 1 = Occurrence 0 = Duration.\r
950 ///\r
951 UINT32 E:1;\r
952 ///\r
953 /// [Bit 19] PC Enabled the signaling of performance counter overflow via\r
954 /// BP0 pin.\r
955 ///\r
956 UINT32 PC:1;\r
957 ///\r
958 /// [Bit 20] INT Enables the signaling of counter overflow via input to\r
959 /// APIC 1 = Enable 0 = Disable.\r
960 ///\r
961 UINT32 INT:1;\r
962 UINT32 Reserved1:1;\r
963 ///\r
964 /// [Bit 22] ENABLE Enables the counting of performance events in both\r
965 /// counters 1 = Enable 0 = Disable.\r
966 ///\r
967 UINT32 EN:1;\r
968 ///\r
969 /// [Bit 23] INV Inverts the result of the CMASK condition 1 = Inverted 0\r
970 /// = Non-Inverted.\r
971 ///\r
972 UINT32 INV:1;\r
973 ///\r
974 /// [Bits 31:24] CMASK (Counter Mask).\r
975 ///\r
976 UINT32 CMASK:8;\r
977 UINT32 Reserved2:32;\r
978 } Bits;\r
979 ///\r
980 /// All bit fields as a 32-bit value\r
981 ///\r
982 UINT32 Uint32;\r
983 ///\r
984 /// All bit fields as a 64-bit value\r
985 ///\r
986 UINT64 Uint64;\r
987} MSR_P6_PERFEVTSEL_REGISTER;\r
988\r
989\r
990/**\r
991\r
992\r
993 @param ECX MSR_P6_DEBUGCTLMSR (0x000001D9)\r
994 @param EAX Lower 32-bits of MSR value.\r
995 Described by the type MSR_P6_DEBUGCTLMSR_REGISTER.\r
996 @param EDX Upper 32-bits of MSR value.\r
997 Described by the type MSR_P6_DEBUGCTLMSR_REGISTER.\r
998\r
999 <b>Example usage</b>\r
1000 @code\r
1001 MSR_P6_DEBUGCTLMSR_REGISTER Msr;\r
1002\r
1003 Msr.Uint64 = AsmReadMsr64 (MSR_P6_DEBUGCTLMSR);\r
1004 AsmWriteMsr64 (MSR_P6_DEBUGCTLMSR, Msr.Uint64);\r
1005 @endcode\r
91e3003c 1006 @note MSR_P6_DEBUGCTLMSR is defined as DEBUGCTLMSR in SDM.\r
8e6bff88
MK
1007**/\r
1008#define MSR_P6_DEBUGCTLMSR 0x000001D9\r
1009\r
1010/**\r
1011 MSR information returned for MSR index #MSR_P6_DEBUGCTLMSR\r
1012**/\r
1013typedef union {\r
1014 ///\r
1015 /// Individual bit fields\r
1016 ///\r
1017 struct {\r
1018 ///\r
1019 /// [Bit 0] Enable/Disable Last Branch Records.\r
1020 ///\r
1021 UINT32 LBR:1;\r
1022 ///\r
1023 /// [Bit 1] Branch Trap Flag.\r
1024 ///\r
1025 UINT32 BTF:1;\r
1026 ///\r
1027 /// [Bit 2] Performance Monitoring/Break Point Pins.\r
1028 ///\r
1029 UINT32 PB0:1;\r
1030 ///\r
1031 /// [Bit 3] Performance Monitoring/Break Point Pins.\r
1032 ///\r
1033 UINT32 PB1:1;\r
1034 ///\r
1035 /// [Bit 4] Performance Monitoring/Break Point Pins.\r
1036 ///\r
1037 UINT32 PB2:1;\r
1038 ///\r
1039 /// [Bit 5] Performance Monitoring/Break Point Pins.\r
1040 ///\r
1041 UINT32 PB3:1;\r
1042 ///\r
1043 /// [Bit 6] Enable/Disable Execution Trace Messages.\r
1044 ///\r
1045 UINT32 TR:1;\r
1046 UINT32 Reserved1:25;\r
1047 UINT32 Reserved2:32;\r
1048 } Bits;\r
1049 ///\r
1050 /// All bit fields as a 32-bit value\r
1051 ///\r
1052 UINT32 Uint32;\r
1053 ///\r
1054 /// All bit fields as a 64-bit value\r
1055 ///\r
1056 UINT64 Uint64;\r
1057} MSR_P6_DEBUGCTLMSR_REGISTER;\r
1058\r
1059\r
1060/**\r
1061\r
1062\r
1063 @param ECX MSR_P6_LASTBRANCHFROMIP (0x000001DB)\r
1064 @param EAX Lower 32-bits of MSR value.\r
1065 @param EDX Upper 32-bits of MSR value.\r
1066\r
1067 <b>Example usage</b>\r
1068 @code\r
1069 UINT64 Msr;\r
1070\r
1071 Msr = AsmReadMsr64 (MSR_P6_LASTBRANCHFROMIP);\r
1072 AsmWriteMsr64 (MSR_P6_LASTBRANCHFROMIP, Msr);\r
1073 @endcode\r
91e3003c 1074 @note MSR_P6_LASTBRANCHFROMIP is defined as LASTBRANCHFROMIP in SDM.\r
8e6bff88
MK
1075**/\r
1076#define MSR_P6_LASTBRANCHFROMIP 0x000001DB\r
1077\r
1078\r
1079/**\r
1080\r
1081\r
1082 @param ECX MSR_P6_LASTBRANCHTOIP (0x000001DC)\r
1083 @param EAX Lower 32-bits of MSR value.\r
1084 @param EDX Upper 32-bits of MSR value.\r
1085\r
1086 <b>Example usage</b>\r
1087 @code\r
1088 UINT64 Msr;\r
1089\r
1090 Msr = AsmReadMsr64 (MSR_P6_LASTBRANCHTOIP);\r
1091 AsmWriteMsr64 (MSR_P6_LASTBRANCHTOIP, Msr);\r
1092 @endcode\r
91e3003c 1093 @note MSR_P6_LASTBRANCHTOIP is defined as LASTBRANCHTOIP in SDM.\r
8e6bff88
MK
1094**/\r
1095#define MSR_P6_LASTBRANCHTOIP 0x000001DC\r
1096\r
1097\r
1098/**\r
1099\r
1100\r
1101 @param ECX MSR_P6_LASTINTFROMIP (0x000001DD)\r
1102 @param EAX Lower 32-bits of MSR value.\r
1103 @param EDX Upper 32-bits of MSR value.\r
1104\r
1105 <b>Example usage</b>\r
1106 @code\r
1107 UINT64 Msr;\r
1108\r
1109 Msr = AsmReadMsr64 (MSR_P6_LASTINTFROMIP);\r
1110 AsmWriteMsr64 (MSR_P6_LASTINTFROMIP, Msr);\r
1111 @endcode\r
91e3003c 1112 @note MSR_P6_LASTINTFROMIP is defined as LASTINTFROMIP in SDM.\r
8e6bff88
MK
1113**/\r
1114#define MSR_P6_LASTINTFROMIP 0x000001DD\r
1115\r
1116\r
1117/**\r
1118\r
1119\r
1120 @param ECX MSR_P6_LASTINTTOIP (0x000001DE)\r
1121 @param EAX Lower 32-bits of MSR value.\r
1122 @param EDX Upper 32-bits of MSR value.\r
1123\r
1124 <b>Example usage</b>\r
1125 @code\r
1126 UINT64 Msr;\r
1127\r
1128 Msr = AsmReadMsr64 (MSR_P6_LASTINTTOIP);\r
1129 AsmWriteMsr64 (MSR_P6_LASTINTTOIP, Msr);\r
1130 @endcode\r
91e3003c 1131 @note MSR_P6_LASTINTTOIP is defined as LASTINTTOIP in SDM.\r
8e6bff88
MK
1132**/\r
1133#define MSR_P6_LASTINTTOIP 0x000001DE\r
1134\r
1135\r
1136/**\r
1137\r
1138\r
1139 @param ECX MSR_P6_ROB_CR_BKUPTMPDR6 (0x000001E0)\r
1140 @param EAX Lower 32-bits of MSR value.\r
1141 Described by the type MSR_P6_ROB_CR_BKUPTMPDR6_REGISTER.\r
1142 @param EDX Upper 32-bits of MSR value.\r
1143 Described by the type MSR_P6_ROB_CR_BKUPTMPDR6_REGISTER.\r
1144\r
1145 <b>Example usage</b>\r
1146 @code\r
1147 MSR_P6_ROB_CR_BKUPTMPDR6_REGISTER Msr;\r
1148\r
1149 Msr.Uint64 = AsmReadMsr64 (MSR_P6_ROB_CR_BKUPTMPDR6);\r
1150 AsmWriteMsr64 (MSR_P6_ROB_CR_BKUPTMPDR6, Msr.Uint64);\r
1151 @endcode\r
91e3003c 1152 @note MSR_P6_ROB_CR_BKUPTMPDR6 is defined as ROB_CR_BKUPTMPDR6 in SDM.\r
8e6bff88
MK
1153**/\r
1154#define MSR_P6_ROB_CR_BKUPTMPDR6 0x000001E0\r
1155\r
1156/**\r
1157 MSR information returned for MSR index #MSR_P6_ROB_CR_BKUPTMPDR6\r
1158**/\r
1159typedef union {\r
1160 ///\r
1161 /// Individual bit fields\r
1162 ///\r
1163 struct {\r
1164 UINT32 Reserved1:2;\r
1165 ///\r
1166 /// [Bit 2] Fast Strings Enable bit. Default is enabled.\r
1167 ///\r
1168 UINT32 FastStrings:1;\r
1169 UINT32 Reserved2:29;\r
1170 UINT32 Reserved3:32;\r
1171 } Bits;\r
1172 ///\r
1173 /// All bit fields as a 32-bit value\r
1174 ///\r
1175 UINT32 Uint32;\r
1176 ///\r
1177 /// All bit fields as a 64-bit value\r
1178 ///\r
1179 UINT64 Uint64;\r
1180} MSR_P6_ROB_CR_BKUPTMPDR6_REGISTER;\r
1181\r
1182\r
1183/**\r
1184\r
1185\r
1186 @param ECX MSR_P6_MTRRPHYSBASEn\r
1187 @param EAX Lower 32-bits of MSR value.\r
1188 @param EDX Upper 32-bits of MSR value.\r
1189\r
1190 <b>Example usage</b>\r
1191 @code\r
1192 UINT64 Msr;\r
1193\r
1194 Msr = AsmReadMsr64 (MSR_P6_MTRRPHYSBASE0);\r
1195 AsmWriteMsr64 (MSR_P6_MTRRPHYSBASE0, Msr);\r
1196 @endcode\r
91e3003c
JF
1197 @note MSR_P6_MTRRPHYSBASE0 is defined as MTRRPHYSBASE0 in SDM.\r
1198 MSR_P6_MTRRPHYSBASE1 is defined as MTRRPHYSBASE1 in SDM.\r
1199 MSR_P6_MTRRPHYSBASE2 is defined as MTRRPHYSBASE2 in SDM.\r
1200 MSR_P6_MTRRPHYSBASE3 is defined as MTRRPHYSBASE3 in SDM.\r
1201 MSR_P6_MTRRPHYSBASE4 is defined as MTRRPHYSBASE4 in SDM.\r
1202 MSR_P6_MTRRPHYSBASE5 is defined as MTRRPHYSBASE5 in SDM.\r
1203 MSR_P6_MTRRPHYSBASE6 is defined as MTRRPHYSBASE6 in SDM.\r
1204 MSR_P6_MTRRPHYSBASE7 is defined as MTRRPHYSBASE7 in SDM.\r
8e6bff88
MK
1205 @{\r
1206**/\r
1207#define MSR_P6_MTRRPHYSBASE0 0x00000200\r
1208#define MSR_P6_MTRRPHYSBASE1 0x00000202\r
1209#define MSR_P6_MTRRPHYSBASE2 0x00000204\r
1210#define MSR_P6_MTRRPHYSBASE3 0x00000206\r
1211#define MSR_P6_MTRRPHYSBASE4 0x00000208\r
1212#define MSR_P6_MTRRPHYSBASE5 0x0000020A\r
1213#define MSR_P6_MTRRPHYSBASE6 0x0000020C\r
1214#define MSR_P6_MTRRPHYSBASE7 0x0000020E\r
1215/// @}\r
1216\r
1217\r
1218/**\r
1219\r
1220\r
1221 @param ECX MSR_P6_MTRRPHYSMASKn\r
1222 @param EAX Lower 32-bits of MSR value.\r
1223 @param EDX Upper 32-bits of MSR value.\r
1224\r
1225 <b>Example usage</b>\r
1226 @code\r
1227 UINT64 Msr;\r
1228\r
1229 Msr = AsmReadMsr64 (MSR_P6_MTRRPHYSMASK0);\r
1230 AsmWriteMsr64 (MSR_P6_MTRRPHYSMASK0, Msr);\r
1231 @endcode\r
91e3003c
JF
1232 @note MSR_P6_MTRRPHYSMASK0 is defined as MTRRPHYSMASK0 in SDM.\r
1233 MSR_P6_MTRRPHYSMASK1 is defined as MTRRPHYSMASK1 in SDM.\r
1234 MSR_P6_MTRRPHYSMASK2 is defined as MTRRPHYSMASK2 in SDM.\r
1235 MSR_P6_MTRRPHYSMASK3 is defined as MTRRPHYSMASK3 in SDM.\r
1236 MSR_P6_MTRRPHYSMASK4 is defined as MTRRPHYSMASK4 in SDM.\r
1237 MSR_P6_MTRRPHYSMASK5 is defined as MTRRPHYSMASK5 in SDM.\r
1238 MSR_P6_MTRRPHYSMASK6 is defined as MTRRPHYSMASK6 in SDM.\r
1239 MSR_P6_MTRRPHYSMASK7 is defined as MTRRPHYSMASK7 in SDM.\r
8e6bff88
MK
1240 @{\r
1241**/\r
1242#define MSR_P6_MTRRPHYSMASK0 0x00000201\r
1243#define MSR_P6_MTRRPHYSMASK1 0x00000203\r
1244#define MSR_P6_MTRRPHYSMASK2 0x00000205\r
1245#define MSR_P6_MTRRPHYSMASK3 0x00000207\r
1246#define MSR_P6_MTRRPHYSMASK4 0x00000209\r
1247#define MSR_P6_MTRRPHYSMASK5 0x0000020B\r
1248#define MSR_P6_MTRRPHYSMASK6 0x0000020D\r
1249#define MSR_P6_MTRRPHYSMASK7 0x0000020F\r
1250/// @}\r
1251\r
1252\r
1253/**\r
1254\r
1255\r
1256 @param ECX MSR_P6_MTRRFIX64K_00000 (0x00000250)\r
1257 @param EAX Lower 32-bits of MSR value.\r
1258 @param EDX Upper 32-bits of MSR value.\r
1259\r
1260 <b>Example usage</b>\r
1261 @code\r
1262 UINT64 Msr;\r
1263\r
1264 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX64K_00000);\r
1265 AsmWriteMsr64 (MSR_P6_MTRRFIX64K_00000, Msr);\r
1266 @endcode\r
91e3003c 1267 @note MSR_P6_MTRRFIX64K_00000 is defined as MTRRFIX64K_00000 in SDM.\r
8e6bff88
MK
1268**/\r
1269#define MSR_P6_MTRRFIX64K_00000 0x00000250\r
1270\r
1271\r
1272/**\r
1273\r
1274\r
1275 @param ECX MSR_P6_MTRRFIX16K_80000 (0x00000258)\r
1276 @param EAX Lower 32-bits of MSR value.\r
1277 @param EDX Upper 32-bits of MSR value.\r
1278\r
1279 <b>Example usage</b>\r
1280 @code\r
1281 UINT64 Msr;\r
1282\r
1283 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX16K_80000);\r
1284 AsmWriteMsr64 (MSR_P6_MTRRFIX16K_80000, Msr);\r
1285 @endcode\r
91e3003c 1286 @note MSR_P6_MTRRFIX16K_80000 is defined as MTRRFIX16K_80000 in SDM.\r
8e6bff88
MK
1287**/\r
1288#define MSR_P6_MTRRFIX16K_80000 0x00000258\r
1289\r
1290\r
1291/**\r
1292\r
1293\r
1294 @param ECX MSR_P6_MTRRFIX16K_A0000 (0x00000259)\r
1295 @param EAX Lower 32-bits of MSR value.\r
1296 @param EDX Upper 32-bits of MSR value.\r
1297\r
1298 <b>Example usage</b>\r
1299 @code\r
1300 UINT64 Msr;\r
1301\r
1302 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX16K_A0000);\r
1303 AsmWriteMsr64 (MSR_P6_MTRRFIX16K_A0000, Msr);\r
1304 @endcode\r
91e3003c 1305 @note MSR_P6_MTRRFIX16K_A0000 is defined as MTRRFIX16K_A0000 in SDM.\r
8e6bff88
MK
1306**/\r
1307#define MSR_P6_MTRRFIX16K_A0000 0x00000259\r
1308\r
1309\r
1310/**\r
1311\r
1312\r
1313 @param ECX MSR_P6_MTRRFIX4K_C0000 (0x00000268)\r
1314 @param EAX Lower 32-bits of MSR value.\r
1315 @param EDX Upper 32-bits of MSR value.\r
1316\r
1317 <b>Example usage</b>\r
1318 @code\r
1319 UINT64 Msr;\r
1320\r
1321 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_C0000);\r
1322 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_C0000, Msr);\r
1323 @endcode\r
91e3003c 1324 @note MSR_P6_MTRRFIX4K_C0000 is defined as MTRRFIX4K_C0000 in SDM.\r
8e6bff88
MK
1325**/\r
1326#define MSR_P6_MTRRFIX4K_C0000 0x00000268\r
1327\r
1328\r
1329/**\r
1330\r
1331\r
1332 @param ECX MSR_P6_MTRRFIX4K_C8000 (0x00000269)\r
1333 @param EAX Lower 32-bits of MSR value.\r
1334 @param EDX Upper 32-bits of MSR value.\r
1335\r
1336 <b>Example usage</b>\r
1337 @code\r
1338 UINT64 Msr;\r
1339\r
1340 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_C8000);\r
1341 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_C8000, Msr);\r
1342 @endcode\r
91e3003c 1343 @note MSR_P6_MTRRFIX4K_C8000 is defined as MTRRFIX4K_C8000 in SDM.\r
8e6bff88
MK
1344**/\r
1345#define MSR_P6_MTRRFIX4K_C8000 0x00000269\r
1346\r
1347\r
1348/**\r
1349\r
1350\r
1351 @param ECX MSR_P6_MTRRFIX4K_D0000 (0x0000026A)\r
1352 @param EAX Lower 32-bits of MSR value.\r
1353 @param EDX Upper 32-bits of MSR value.\r
1354\r
1355 <b>Example usage</b>\r
1356 @code\r
1357 UINT64 Msr;\r
1358\r
1359 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_D0000);\r
1360 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_D0000, Msr);\r
1361 @endcode\r
91e3003c 1362 @note MSR_P6_MTRRFIX4K_D0000 is defined as MTRRFIX4K_D0000 in SDM.\r
8e6bff88
MK
1363**/\r
1364#define MSR_P6_MTRRFIX4K_D0000 0x0000026A\r
1365\r
1366\r
1367/**\r
1368\r
1369\r
1370 @param ECX MSR_P6_MTRRFIX4K_D8000 (0x0000026B)\r
1371 @param EAX Lower 32-bits of MSR value.\r
1372 @param EDX Upper 32-bits of MSR value.\r
1373\r
1374 <b>Example usage</b>\r
1375 @code\r
1376 UINT64 Msr;\r
1377\r
1378 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_D8000);\r
1379 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_D8000, Msr);\r
1380 @endcode\r
91e3003c 1381 @note MSR_P6_MTRRFIX4K_D8000 is defined as MTRRFIX4K_D8000 in SDM.\r
8e6bff88
MK
1382**/\r
1383#define MSR_P6_MTRRFIX4K_D8000 0x0000026B\r
1384\r
1385\r
1386/**\r
1387\r
1388\r
1389 @param ECX MSR_P6_MTRRFIX4K_E0000 (0x0000026C)\r
1390 @param EAX Lower 32-bits of MSR value.\r
1391 @param EDX Upper 32-bits of MSR value.\r
1392\r
1393 <b>Example usage</b>\r
1394 @code\r
1395 UINT64 Msr;\r
1396\r
1397 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_E0000);\r
1398 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_E0000, Msr);\r
1399 @endcode\r
91e3003c 1400 @note MSR_P6_MTRRFIX4K_E0000 is defined as MTRRFIX4K_E0000 in SDM.\r
8e6bff88
MK
1401**/\r
1402#define MSR_P6_MTRRFIX4K_E0000 0x0000026C\r
1403\r
1404\r
1405/**\r
1406\r
1407\r
1408 @param ECX MSR_P6_MTRRFIX4K_E8000 (0x0000026D)\r
1409 @param EAX Lower 32-bits of MSR value.\r
1410 @param EDX Upper 32-bits of MSR value.\r
1411\r
1412 <b>Example usage</b>\r
1413 @code\r
1414 UINT64 Msr;\r
1415\r
1416 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_E8000);\r
1417 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_E8000, Msr);\r
1418 @endcode\r
91e3003c 1419 @note MSR_P6_MTRRFIX4K_E8000 is defined as MTRRFIX4K_E8000 in SDM.\r
8e6bff88
MK
1420**/\r
1421#define MSR_P6_MTRRFIX4K_E8000 0x0000026D\r
1422\r
1423\r
1424/**\r
1425\r
1426\r
1427 @param ECX MSR_P6_MTRRFIX4K_F0000 (0x0000026E)\r
1428 @param EAX Lower 32-bits of MSR value.\r
1429 @param EDX Upper 32-bits of MSR value.\r
1430\r
1431 <b>Example usage</b>\r
1432 @code\r
1433 UINT64 Msr;\r
1434\r
1435 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_F0000);\r
1436 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_F0000, Msr);\r
1437 @endcode\r
91e3003c 1438 @note MSR_P6_MTRRFIX4K_F0000 is defined as MTRRFIX4K_F0000 in SDM.\r
8e6bff88
MK
1439**/\r
1440#define MSR_P6_MTRRFIX4K_F0000 0x0000026E\r
1441\r
1442\r
1443/**\r
1444\r
1445\r
1446 @param ECX MSR_P6_MTRRFIX4K_F8000 (0x0000026F)\r
1447 @param EAX Lower 32-bits of MSR value.\r
1448 @param EDX Upper 32-bits of MSR value.\r
1449\r
1450 <b>Example usage</b>\r
1451 @code\r
1452 UINT64 Msr;\r
1453\r
1454 Msr = AsmReadMsr64 (MSR_P6_MTRRFIX4K_F8000);\r
1455 AsmWriteMsr64 (MSR_P6_MTRRFIX4K_F8000, Msr);\r
1456 @endcode\r
91e3003c 1457 @note MSR_P6_MTRRFIX4K_F8000 is defined as MTRRFIX4K_F8000 in SDM.\r
8e6bff88
MK
1458**/\r
1459#define MSR_P6_MTRRFIX4K_F8000 0x0000026F\r
1460\r
1461\r
1462/**\r
1463\r
1464\r
1465 @param ECX MSR_P6_MTRRDEFTYPE (0x000002FF)\r
1466 @param EAX Lower 32-bits of MSR value.\r
1467 Described by the type MSR_P6_MTRRDEFTYPE_REGISTER.\r
1468 @param EDX Upper 32-bits of MSR value.\r
1469 Described by the type MSR_P6_MTRRDEFTYPE_REGISTER.\r
1470\r
1471 <b>Example usage</b>\r
1472 @code\r
1473 MSR_P6_MTRRDEFTYPE_REGISTER Msr;\r
1474\r
1475 Msr.Uint64 = AsmReadMsr64 (MSR_P6_MTRRDEFTYPE);\r
1476 AsmWriteMsr64 (MSR_P6_MTRRDEFTYPE, Msr.Uint64);\r
1477 @endcode\r
91e3003c 1478 @note MSR_P6_MTRRDEFTYPE is defined as MTRRDEFTYPE in SDM.\r
8e6bff88
MK
1479**/\r
1480#define MSR_P6_MTRRDEFTYPE 0x000002FF\r
1481\r
1482/**\r
1483 MSR information returned for MSR index #MSR_P6_MTRRDEFTYPE\r
1484**/\r
1485typedef union {\r
1486 ///\r
1487 /// Individual bit fields\r
1488 ///\r
1489 struct {\r
1490 ///\r
1491 /// [Bits 2:0] Default memory type.\r
1492 ///\r
1493 UINT32 Type:3;\r
1494 UINT32 Reserved1:7;\r
1495 ///\r
1496 /// [Bit 10] Fixed MTRR enable.\r
1497 ///\r
1498 UINT32 FE:1;\r
1499 ///\r
1500 /// [Bit 11] MTRR Enable.\r
1501 ///\r
1502 UINT32 E:1;\r
1503 UINT32 Reserved2:20;\r
1504 UINT32 Reserved3:32;\r
1505 } Bits;\r
1506 ///\r
1507 /// All bit fields as a 32-bit value\r
1508 ///\r
1509 UINT32 Uint32;\r
1510 ///\r
1511 /// All bit fields as a 64-bit value\r
1512 ///\r
1513 UINT64 Uint64;\r
1514} MSR_P6_MTRRDEFTYPE_REGISTER;\r
1515\r
1516\r
1517/**\r
1518\r
1519\r
1520 @param ECX MSR_P6_MC0_CTL (0x00000400)\r
1521 @param EAX Lower 32-bits of MSR value.\r
1522 @param EDX Upper 32-bits of MSR value.\r
1523\r
1524 <b>Example usage</b>\r
1525 @code\r
1526 UINT64 Msr;\r
1527\r
1528 Msr = AsmReadMsr64 (MSR_P6_MC0_CTL);\r
1529 AsmWriteMsr64 (MSR_P6_MC0_CTL, Msr);\r
1530 @endcode\r
91e3003c
JF
1531 @note MSR_P6_MC0_CTL is defined as MC0_CTL in SDM.\r
1532 MSR_P6_MC1_CTL is defined as MC1_CTL in SDM.\r
1533 MSR_P6_MC2_CTL is defined as MC2_CTL in SDM.\r
1534 MSR_P6_MC3_CTL is defined as MC3_CTL in SDM.\r
1535 MSR_P6_MC4_CTL is defined as MC4_CTL in SDM.\r
8e6bff88
MK
1536 @{\r
1537**/\r
1538#define MSR_P6_MC0_CTL 0x00000400\r
1539#define MSR_P6_MC1_CTL 0x00000404\r
1540#define MSR_P6_MC2_CTL 0x00000408\r
1541#define MSR_P6_MC3_CTL 0x00000410\r
1542#define MSR_P6_MC4_CTL 0x0000040C\r
1543/// @}\r
1544\r
1545\r
1546/**\r
1547\r
1548 Bit definitions for MSR_P6_MC4_STATUS are the same as MSR_P6_MC0_STATUS,\r
1549 except bits 0, 4, 57, and 61 are hardcoded to 1.\r
1550\r
1551 @param ECX MSR_P6_MCn_STATUS\r
1552 @param EAX Lower 32-bits of MSR value.\r
1553 Described by the type MSR_P6_MC_STATUS_REGISTER.\r
1554 @param EDX Upper 32-bits of MSR value.\r
1555 Described by the type MSR_P6_MC_STATUS_REGISTER.\r
1556\r
1557 <b>Example usage</b>\r
1558 @code\r
1559 MSR_P6_MC_STATUS_REGISTER Msr;\r
1560\r
1561 Msr.Uint64 = AsmReadMsr64 (MSR_P6_MC0_STATUS);\r
1562 AsmWriteMsr64 (MSR_P6_MC0_STATUS, Msr.Uint64);\r
1563 @endcode\r
91e3003c
JF
1564 @note MSR_P6_MC0_STATUS is defined as MC0_STATUS in SDM.\r
1565 MSR_P6_MC1_STATUS is defined as MC1_STATUS in SDM.\r
1566 MSR_P6_MC2_STATUS is defined as MC2_STATUS in SDM.\r
1567 MSR_P6_MC3_STATUS is defined as MC3_STATUS in SDM.\r
1568 MSR_P6_MC4_STATUS is defined as MC4_STATUS in SDM.\r
8e6bff88
MK
1569 @{\r
1570**/\r
1571#define MSR_P6_MC0_STATUS 0x00000401\r
1572#define MSR_P6_MC1_STATUS 0x00000405\r
1573#define MSR_P6_MC2_STATUS 0x00000409\r
1574#define MSR_P6_MC3_STATUS 0x00000411\r
1575#define MSR_P6_MC4_STATUS 0x0000040D\r
1576/// @}\r
1577\r
1578/**\r
1579 MSR information returned for MSR index #MSR_P6_MC0_STATUS to\r
1580 #MSR_P6_MC4_STATUS\r
1581**/\r
1582typedef union {\r
1583 ///\r
1584 /// Individual bit fields\r
1585 ///\r
1586 struct {\r
1587 ///\r
1588 /// [Bits 15:0] MC_STATUS_MCACOD.\r
1589 ///\r
1590 UINT32 MC_STATUS_MCACOD:16;\r
1591 ///\r
1592 /// [Bits 31:16] MC_STATUS_MSCOD.\r
1593 ///\r
1594 UINT32 MC_STATUS_MSCOD:16;\r
1595 UINT32 Reserved:25;\r
1596 ///\r
1597 /// [Bit 57] MC_STATUS_DAM.\r
1598 ///\r
1599 UINT32 MC_STATUS_DAM:1;\r
1600 ///\r
1601 /// [Bit 58] MC_STATUS_ADDRV.\r
1602 ///\r
1603 UINT32 MC_STATUS_ADDRV:1;\r
1604 ///\r
1605 /// [Bit 59] MC_STATUS_MISCV.\r
1606 ///\r
1607 UINT32 MC_STATUS_MISCV:1;\r
1608 ///\r
1609 /// [Bit 60] MC_STATUS_EN. (Note: For MC0_STATUS only, this bit is\r
1610 /// hardcoded to 1.).\r
1611 ///\r
1612 UINT32 MC_STATUS_EN:1;\r
1613 ///\r
1614 /// [Bit 61] MC_STATUS_UC.\r
1615 ///\r
1616 UINT32 MC_STATUS_UC:1;\r
1617 ///\r
1618 /// [Bit 62] MC_STATUS_O.\r
1619 ///\r
1620 UINT32 MC_STATUS_O:1;\r
1621 ///\r
1622 /// [Bit 63] MC_STATUS_V.\r
1623 ///\r
1624 UINT32 MC_STATUS_V:1;\r
1625 } Bits;\r
1626 ///\r
1627 /// All bit fields as a 64-bit value\r
1628 ///\r
1629 UINT64 Uint64;\r
1630} MSR_P6_MC_STATUS_REGISTER;\r
1631\r
1632\r
1633/**\r
1634\r
1635 MSR_P6_MC4_ADDR is defined in MCA architecture but not implemented in P6 Family processors.\r
1636\r
1637 @param ECX MSR_P6_MC0_ADDR (0x00000402)\r
1638 @param EAX Lower 32-bits of MSR value.\r
1639 @param EDX Upper 32-bits of MSR value.\r
1640\r
1641 <b>Example usage</b>\r
1642 @code\r
1643 UINT64 Msr;\r
1644\r
1645 Msr = AsmReadMsr64 (MSR_P6_MC0_ADDR);\r
1646 AsmWriteMsr64 (MSR_P6_MC0_ADDR, Msr);\r
1647 @endcode\r
91e3003c
JF
1648 @note MSR_P6_MC0_ADDR is defined as MC0_ADDR in SDM.\r
1649 MSR_P6_MC1_ADDR is defined as MC1_ADDR in SDM.\r
1650 MSR_P6_MC2_ADDR is defined as MC2_ADDR in SDM.\r
1651 MSR_P6_MC3_ADDR is defined as MC3_ADDR in SDM.\r
1652 MSR_P6_MC4_ADDR is defined as MC4_ADDR in SDM.\r
8e6bff88
MK
1653 @{\r
1654**/\r
1655#define MSR_P6_MC0_ADDR 0x00000402\r
1656#define MSR_P6_MC1_ADDR 0x00000406\r
1657#define MSR_P6_MC2_ADDR 0x0000040A\r
1658#define MSR_P6_MC3_ADDR 0x00000412\r
1659#define MSR_P6_MC4_ADDR 0x0000040E\r
1660/// @}\r
1661\r
1662\r
1663/**\r
1664 Defined in MCA architecture but not implemented in the P6 family processors.\r
1665\r
1666 @param ECX MSR_P6_MC0_MISC (0x00000403)\r
1667 @param EAX Lower 32-bits of MSR value.\r
1668 @param EDX Upper 32-bits of MSR value.\r
1669\r
1670 <b>Example usage</b>\r
1671 @code\r
1672 UINT64 Msr;\r
1673\r
1674 Msr = AsmReadMsr64 (MSR_P6_MC0_MISC);\r
1675 AsmWriteMsr64 (MSR_P6_MC0_MISC, Msr);\r
1676 @endcode\r
91e3003c
JF
1677 @note MSR_P6_MC0_MISC is defined as MC0_MISC in SDM.\r
1678 MSR_P6_MC1_MISC is defined as MC1_MISC in SDM.\r
1679 MSR_P6_MC2_MISC is defined as MC2_MISC in SDM.\r
1680 MSR_P6_MC3_MISC is defined as MC3_MISC in SDM.\r
1681 MSR_P6_MC4_MISC is defined as MC4_MISC in SDM.\r
8e6bff88
MK
1682 @{\r
1683**/\r
1684#define MSR_P6_MC0_MISC 0x00000403\r
1685#define MSR_P6_MC1_MISC 0x00000407\r
1686#define MSR_P6_MC2_MISC 0x0000040B\r
1687#define MSR_P6_MC3_MISC 0x00000413\r
1688#define MSR_P6_MC4_MISC 0x0000040F\r
1689/// @}\r
1690\r
1691#endif\r