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