]> git.proxmox.com Git - mirror_edk2.git/blob - UefiCpuPkg/Include/Register/Msr/Core2Msr.h
UefiCpuPkg/Include: Update MSR header files with SDM (Sep.2016)
[mirror_edk2.git] / UefiCpuPkg / Include / Register / Msr / Core2Msr.h
1 /** @file
2 MSR Definitions for the Intel(R) Core(TM) 2 Processor Family.
3
4 Provides defines for Machine Specific Registers(MSR) indexes. Data structures
5 are provided for MSRs that contain one or more bit fields. If the MSR value
6 returned is a single 32-bit or 64-bit value, then a data structure is not
7 provided for that MSR.
8
9 Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
10 This program and the accompanying materials
11 are licensed and made available under the terms and conditions of the BSD License
12 which accompanies this distribution. The full text of the license may be found at
13 http://opensource.org/licenses/bsd-license.php
14
15 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
16 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17
18 @par Specification Reference:
19 Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3,
20 September 2016, Chapter 35 Model-Specific-Registers (MSR), Section 35.2.
21
22 **/
23
24 #ifndef __CORE2_MSR_H__
25 #define __CORE2_MSR_H__
26
27 #include <Register/ArchitecturalMsr.h>
28
29 /**
30 Shared. Model Specific Platform ID (R).
31
32 @param ECX MSR_CORE2_PLATFORM_ID (0x00000017)
33 @param EAX Lower 32-bits of MSR value.
34 Described by the type MSR_CORE2_PLATFORM_ID_REGISTER.
35 @param EDX Upper 32-bits of MSR value.
36 Described by the type MSR_CORE2_PLATFORM_ID_REGISTER.
37
38 <b>Example usage</b>
39 @code
40 MSR_CORE2_PLATFORM_ID_REGISTER Msr;
41
42 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_PLATFORM_ID);
43 @endcode
44 @note MSR_CORE2_PLATFORM_ID is defined as MSR_PLATFORM_ID in SDM.
45 **/
46 #define MSR_CORE2_PLATFORM_ID 0x00000017
47
48 /**
49 MSR information returned for MSR index #MSR_CORE2_PLATFORM_ID
50 **/
51 typedef union {
52 ///
53 /// Individual bit fields
54 ///
55 struct {
56 UINT32 Reserved1:8;
57 ///
58 /// [Bits 12:8] Maximum Qualified Ratio (R) The maximum allowed bus ratio.
59 ///
60 UINT32 MaximumQualifiedRatio:5;
61 UINT32 Reserved2:19;
62 UINT32 Reserved3:18;
63 ///
64 /// [Bits 52:50] See Table 35-2.
65 ///
66 UINT32 PlatformId:3;
67 UINT32 Reserved4:11;
68 } Bits;
69 ///
70 /// All bit fields as a 64-bit value
71 ///
72 UINT64 Uint64;
73 } MSR_CORE2_PLATFORM_ID_REGISTER;
74
75
76 /**
77 Shared. Processor Hard Power-On Configuration (R/W) Enables and disables
78 processor features; (R) indicates current processor configuration.
79
80 @param ECX MSR_CORE2_EBL_CR_POWERON (0x0000002A)
81 @param EAX Lower 32-bits of MSR value.
82 Described by the type MSR_CORE2_EBL_CR_POWERON_REGISTER.
83 @param EDX Upper 32-bits of MSR value.
84 Described by the type MSR_CORE2_EBL_CR_POWERON_REGISTER.
85
86 <b>Example usage</b>
87 @code
88 MSR_CORE2_EBL_CR_POWERON_REGISTER Msr;
89
90 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_EBL_CR_POWERON);
91 AsmWriteMsr64 (MSR_CORE2_EBL_CR_POWERON, Msr.Uint64);
92 @endcode
93 @note MSR_CORE2_EBL_CR_POWERON is defined as MSR_EBL_CR_POWERON in SDM.
94 **/
95 #define MSR_CORE2_EBL_CR_POWERON 0x0000002A
96
97 /**
98 MSR information returned for MSR index #MSR_CORE2_EBL_CR_POWERON
99 **/
100 typedef union {
101 ///
102 /// Individual bit fields
103 ///
104 struct {
105 UINT32 Reserved1:1;
106 ///
107 /// [Bit 1] Data Error Checking Enable (R/W) 1 = Enabled; 0 = Disabled
108 /// Note: Not all processor implements R/W.
109 ///
110 UINT32 DataErrorCheckingEnable:1;
111 ///
112 /// [Bit 2] Response Error Checking Enable (R/W) 1 = Enabled; 0 = Disabled
113 /// Note: Not all processor implements R/W.
114 ///
115 UINT32 ResponseErrorCheckingEnable:1;
116 ///
117 /// [Bit 3] MCERR# Drive Enable (R/W) 1 = Enabled; 0 = Disabled Note: Not
118 /// all processor implements R/W.
119 ///
120 UINT32 MCERR_DriveEnable:1;
121 ///
122 /// [Bit 4] Address Parity Enable (R/W) 1 = Enabled; 0 = Disabled Note:
123 /// Not all processor implements R/W.
124 ///
125 UINT32 AddressParityEnable:1;
126 UINT32 Reserved2:1;
127 UINT32 Reserved3:1;
128 ///
129 /// [Bit 7] BINIT# Driver Enable (R/W) 1 = Enabled; 0 = Disabled Note: Not
130 /// all processor implements R/W.
131 ///
132 UINT32 BINIT_DriverEnable:1;
133 ///
134 /// [Bit 8] Output Tri-state Enabled (R/O) 1 = Enabled; 0 = Disabled.
135 ///
136 UINT32 OutputTriStateEnable:1;
137 ///
138 /// [Bit 9] Execute BIST (R/O) 1 = Enabled; 0 = Disabled.
139 ///
140 UINT32 ExecuteBIST:1;
141 ///
142 /// [Bit 10] MCERR# Observation Enabled (R/O) 1 = Enabled; 0 = Disabled.
143 ///
144 UINT32 MCERR_ObservationEnabled:1;
145 ///
146 /// [Bit 11] Intel TXT Capable Chipset. (R/O) 1 = Present; 0 = Not Present.
147 ///
148 UINT32 IntelTXTCapableChipset:1;
149 ///
150 /// [Bit 12] BINIT# Observation Enabled (R/O) 1 = Enabled; 0 = Disabled.
151 ///
152 UINT32 BINIT_ObservationEnabled:1;
153 UINT32 Reserved4:1;
154 ///
155 /// [Bit 14] 1 MByte Power on Reset Vector (R/O) 1 = 1 MByte; 0 = 4 GBytes.
156 ///
157 UINT32 ResetVector:1;
158 UINT32 Reserved5:1;
159 ///
160 /// [Bits 17:16] APIC Cluster ID (R/O).
161 ///
162 UINT32 APICClusterID:2;
163 ///
164 /// [Bit 18] N/2 Non-Integer Bus Ratio (R/O) 0 = Integer ratio; 1 =
165 /// Non-integer ratio.
166 ///
167 UINT32 NonIntegerBusRatio:1;
168 UINT32 Reserved6:1;
169 ///
170 /// [Bits 21:20] Symmetric Arbitration ID (R/O).
171 ///
172 UINT32 SymmetricArbitrationID:2;
173 ///
174 /// [Bits 26:22] Integer Bus Frequency Ratio (R/O).
175 ///
176 UINT32 IntegerBusFrequencyRatio:5;
177 UINT32 Reserved7:5;
178 UINT32 Reserved8:32;
179 } Bits;
180 ///
181 /// All bit fields as a 32-bit value
182 ///
183 UINT32 Uint32;
184 ///
185 /// All bit fields as a 64-bit value
186 ///
187 UINT64 Uint64;
188 } MSR_CORE2_EBL_CR_POWERON_REGISTER;
189
190
191 /**
192 Unique. Control Features in Intel 64Processor (R/W) See Table 35-2.
193
194 @param ECX MSR_CORE2_FEATURE_CONTROL (0x0000003A)
195 @param EAX Lower 32-bits of MSR value.
196 Described by the type MSR_CORE2_FEATURE_CONTROL_REGISTER.
197 @param EDX Upper 32-bits of MSR value.
198 Described by the type MSR_CORE2_FEATURE_CONTROL_REGISTER.
199
200 <b>Example usage</b>
201 @code
202 MSR_CORE2_FEATURE_CONTROL_REGISTER Msr;
203
204 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_FEATURE_CONTROL);
205 AsmWriteMsr64 (MSR_CORE2_FEATURE_CONTROL, Msr.Uint64);
206 @endcode
207 @note MSR_CORE2_FEATURE_CONTROL is defined as MSR_FEATURE_CONTROL in SDM.
208 **/
209 #define MSR_CORE2_FEATURE_CONTROL 0x0000003A
210
211 /**
212 MSR information returned for MSR index #MSR_CORE2_FEATURE_CONTROL
213 **/
214 typedef union {
215 ///
216 /// Individual bit fields
217 ///
218 struct {
219 UINT32 Reserved1:3;
220 ///
221 /// [Bit 3] Unique. SMRR Enable (R/WL) When this bit is set and the lock
222 /// bit is set makes the SMRR_PHYS_BASE and SMRR_PHYS_MASK registers read
223 /// visible and writeable while in SMM.
224 ///
225 UINT32 SMRREnable:1;
226 UINT32 Reserved2:28;
227 UINT32 Reserved3:32;
228 } Bits;
229 ///
230 /// All bit fields as a 32-bit value
231 ///
232 UINT32 Uint32;
233 ///
234 /// All bit fields as a 64-bit value
235 ///
236 UINT64 Uint64;
237 } MSR_CORE2_FEATURE_CONTROL_REGISTER;
238
239
240 /**
241 Unique. Last Branch Record n From IP (R/W) One of four pairs of last branch
242 record registers on the last branch record stack. The From_IP part of the
243 stack contains pointers to the source instruction. See also: - Last Branch
244 Record Stack TOS at 1C9H - Section 17.5.
245
246 @param ECX MSR_CORE2_LASTBRANCH_n_FROM_IP
247 @param EAX Lower 32-bits of MSR value.
248 @param EDX Upper 32-bits of MSR value.
249
250 <b>Example usage</b>
251 @code
252 UINT64 Msr;
253
254 Msr = AsmReadMsr64 (MSR_CORE2_LASTBRANCH_0_FROM_IP);
255 AsmWriteMsr64 (MSR_CORE2_LASTBRANCH_0_FROM_IP, Msr);
256 @endcode
257 @note MSR_CORE2_LASTBRANCH_0_FROM_IP is defined as MSR_LASTBRANCH_0_FROM_IP in SDM.
258 MSR_CORE2_LASTBRANCH_1_FROM_IP is defined as MSR_LASTBRANCH_1_FROM_IP in SDM.
259 MSR_CORE2_LASTBRANCH_2_FROM_IP is defined as MSR_LASTBRANCH_2_FROM_IP in SDM.
260 MSR_CORE2_LASTBRANCH_3_FROM_IP is defined as MSR_LASTBRANCH_3_FROM_IP in SDM.
261 @{
262 **/
263 #define MSR_CORE2_LASTBRANCH_0_FROM_IP 0x00000040
264 #define MSR_CORE2_LASTBRANCH_1_FROM_IP 0x00000041
265 #define MSR_CORE2_LASTBRANCH_2_FROM_IP 0x00000042
266 #define MSR_CORE2_LASTBRANCH_3_FROM_IP 0x00000043
267 /// @}
268
269
270 /**
271 Unique. Last Branch Record n To IP (R/W) One of four pairs of last branch
272 record registers on the last branch record stack. This To_IP part of the
273 stack contains pointers to the destination instruction.
274
275 @param ECX MSR_CORE2_LASTBRANCH_n_TO_IP
276 @param EAX Lower 32-bits of MSR value.
277 @param EDX Upper 32-bits of MSR value.
278
279 <b>Example usage</b>
280 @code
281 UINT64 Msr;
282
283 Msr = AsmReadMsr64 (MSR_CORE2_LASTBRANCH_0_TO_IP);
284 AsmWriteMsr64 (MSR_CORE2_LASTBRANCH_0_TO_IP, Msr);
285 @endcode
286 @note MSR_CORE2_LASTBRANCH_0_TO_IP is defined as MSR_LASTBRANCH_0_TO_IP in SDM.
287 MSR_CORE2_LASTBRANCH_1_TO_IP is defined as MSR_LASTBRANCH_1_TO_IP in SDM.
288 MSR_CORE2_LASTBRANCH_2_TO_IP is defined as MSR_LASTBRANCH_2_TO_IP in SDM.
289 MSR_CORE2_LASTBRANCH_3_TO_IP is defined as MSR_LASTBRANCH_3_TO_IP in SDM.
290 @{
291 **/
292 #define MSR_CORE2_LASTBRANCH_0_TO_IP 0x00000060
293 #define MSR_CORE2_LASTBRANCH_1_TO_IP 0x00000061
294 #define MSR_CORE2_LASTBRANCH_2_TO_IP 0x00000062
295 #define MSR_CORE2_LASTBRANCH_3_TO_IP 0x00000063
296 /// @}
297
298
299 /**
300 Unique. System Management Mode Base Address register (WO in SMM)
301 Model-specific implementation of SMRR-like interface, read visible and write
302 only in SMM.
303
304 @param ECX MSR_CORE2_SMRR_PHYSBASE (0x000000A0)
305 @param EAX Lower 32-bits of MSR value.
306 Described by the type MSR_CORE2_SMRR_PHYSBASE_REGISTER.
307 @param EDX Upper 32-bits of MSR value.
308 Described by the type MSR_CORE2_SMRR_PHYSBASE_REGISTER.
309
310 <b>Example usage</b>
311 @code
312 MSR_CORE2_SMRR_PHYSBASE_REGISTER Msr;
313
314 Msr.Uint64 = 0;
315 AsmWriteMsr64 (MSR_CORE2_SMRR_PHYSBASE, Msr.Uint64);
316 @endcode
317 @note MSR_CORE2_SMRR_PHYSBASE is defined as MSR_SMRR_PHYSBASE in SDM.
318 **/
319 #define MSR_CORE2_SMRR_PHYSBASE 0x000000A0
320
321 /**
322 MSR information returned for MSR index #MSR_CORE2_SMRR_PHYSBASE
323 **/
324 typedef union {
325 ///
326 /// Individual bit fields
327 ///
328 struct {
329 UINT32 Reserved1:12;
330 ///
331 /// [Bits 31:12] PhysBase. SMRR physical Base Address.
332 ///
333 UINT32 PhysBase:20;
334 UINT32 Reserved2:32;
335 } Bits;
336 ///
337 /// All bit fields as a 32-bit value
338 ///
339 UINT32 Uint32;
340 ///
341 /// All bit fields as a 64-bit value
342 ///
343 UINT64 Uint64;
344 } MSR_CORE2_SMRR_PHYSBASE_REGISTER;
345
346
347 /**
348 Unique. System Management Mode Physical Address Mask register (WO in SMM)
349 Model-specific implementation of SMRR-like interface, read visible and write
350 only in SMM.
351
352 @param ECX MSR_CORE2_SMRR_PHYSMASK (0x000000A1)
353 @param EAX Lower 32-bits of MSR value.
354 Described by the type MSR_CORE2_SMRR_PHYSMASK_REGISTER.
355 @param EDX Upper 32-bits of MSR value.
356 Described by the type MSR_CORE2_SMRR_PHYSMASK_REGISTER.
357
358 <b>Example usage</b>
359 @code
360 MSR_CORE2_SMRR_PHYSMASK_REGISTER Msr;
361
362 Msr.Uint64 = 0;
363 AsmWriteMsr64 (MSR_CORE2_SMRR_PHYSMASK, Msr.Uint64);
364 @endcode
365 @note MSR_CORE2_SMRR_PHYSMASK is defined as MSR_SMRR_PHYSMASK in SDM.
366 **/
367 #define MSR_CORE2_SMRR_PHYSMASK 0x000000A1
368
369 /**
370 MSR information returned for MSR index #MSR_CORE2_SMRR_PHYSMASK
371 **/
372 typedef union {
373 ///
374 /// Individual bit fields
375 ///
376 struct {
377 UINT32 Reserved1:11;
378 ///
379 /// [Bit 11] Valid. Physical address base and range mask are valid.
380 ///
381 UINT32 Valid:1;
382 ///
383 /// [Bits 31:12] PhysMask. SMRR physical address range mask.
384 ///
385 UINT32 PhysMask:20;
386 UINT32 Reserved2:32;
387 } Bits;
388 ///
389 /// All bit fields as a 32-bit value
390 ///
391 UINT32 Uint32;
392 ///
393 /// All bit fields as a 64-bit value
394 ///
395 UINT64 Uint64;
396 } MSR_CORE2_SMRR_PHYSMASK_REGISTER;
397
398
399 /**
400 Shared. Scalable Bus Speed(RO) This field indicates the intended scalable
401 bus clock speed for processors based on Intel Core microarchitecture:.
402
403 @param ECX MSR_CORE2_FSB_FREQ (0x000000CD)
404 @param EAX Lower 32-bits of MSR value.
405 Described by the type MSR_CORE2_FSB_FREQ_REGISTER.
406 @param EDX Upper 32-bits of MSR value.
407 Described by the type MSR_CORE2_FSB_FREQ_REGISTER.
408
409 <b>Example usage</b>
410 @code
411 MSR_CORE2_FSB_FREQ_REGISTER Msr;
412
413 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_FSB_FREQ);
414 @endcode
415 @note MSR_CORE2_FSB_FREQ is defined as MSR_FSB_FREQ in SDM.
416 **/
417 #define MSR_CORE2_FSB_FREQ 0x000000CD
418
419 /**
420 MSR information returned for MSR index #MSR_CORE2_FSB_FREQ
421 **/
422 typedef union {
423 ///
424 /// Individual bit fields
425 ///
426 struct {
427 ///
428 /// [Bits 2:0] - Scalable Bus Speed
429 /// 101B: 100 MHz (FSB 400)
430 /// 001B: 133 MHz (FSB 533)
431 /// 011B: 167 MHz (FSB 667)
432 /// 010B: 200 MHz (FSB 800)
433 /// 000B: 267 MHz (FSB 1067)
434 /// 100B: 333 MHz (FSB 1333)
435 ///
436 /// 133.33 MHz should be utilized if performing calculation with System
437 /// Bus Speed when encoding is 001B. 166.67 MHz should be utilized if
438 /// performing calculation with System Bus Speed when encoding is 011B.
439 /// 266.67 MHz should be utilized if performing calculation with System
440 /// Bus Speed when encoding is 000B. 333.33 MHz should be utilized if
441 /// performing calculation with System Bus Speed when encoding is 100B.
442 ///
443 UINT32 ScalableBusSpeed:3;
444 UINT32 Reserved1:29;
445 UINT32 Reserved2:32;
446 } Bits;
447 ///
448 /// All bit fields as a 32-bit value
449 ///
450 UINT32 Uint32;
451 ///
452 /// All bit fields as a 64-bit value
453 ///
454 UINT64 Uint64;
455 } MSR_CORE2_FSB_FREQ_REGISTER;
456
457
458 /**
459 Shared.
460
461 @param ECX MSR_CORE2_BBL_CR_CTL3 (0x0000011E)
462 @param EAX Lower 32-bits of MSR value.
463 Described by the type MSR_CORE2_BBL_CR_CTL3_REGISTER.
464 @param EDX Upper 32-bits of MSR value.
465 Described by the type MSR_CORE2_BBL_CR_CTL3_REGISTER.
466
467 <b>Example usage</b>
468 @code
469 MSR_CORE2_BBL_CR_CTL3_REGISTER Msr;
470
471 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_BBL_CR_CTL3);
472 AsmWriteMsr64 (MSR_CORE2_BBL_CR_CTL3, Msr.Uint64);
473 @endcode
474 @note MSR_CORE2_BBL_CR_CTL3 is defined as MSR_BBL_CR_CTL3 in SDM.
475 **/
476 #define MSR_CORE2_BBL_CR_CTL3 0x0000011E
477
478 /**
479 MSR information returned for MSR index #MSR_CORE2_BBL_CR_CTL3
480 **/
481 typedef union {
482 ///
483 /// Individual bit fields
484 ///
485 struct {
486 ///
487 /// [Bit 0] L2 Hardware Enabled (RO) 1 = If the L2 is hardware-enabled 0 =
488 /// Indicates if the L2 is hardware-disabled.
489 ///
490 UINT32 L2HardwareEnabled:1;
491 UINT32 Reserved1:7;
492 ///
493 /// [Bit 8] L2 Enabled (R/W) 1 = L2 cache has been initialized 0 =
494 /// Disabled (default) Until this bit is set the processor will not
495 /// respond to the WBINVD instruction or the assertion of the FLUSH# input.
496 ///
497 UINT32 L2Enabled:1;
498 UINT32 Reserved2:14;
499 ///
500 /// [Bit 23] L2 Not Present (RO) 1. = L2 Present 2. = L2 Not Present.
501 ///
502 UINT32 L2NotPresent:1;
503 UINT32 Reserved3:8;
504 UINT32 Reserved4:32;
505 } Bits;
506 ///
507 /// All bit fields as a 32-bit value
508 ///
509 UINT32 Uint32;
510 ///
511 /// All bit fields as a 64-bit value
512 ///
513 UINT64 Uint64;
514 } MSR_CORE2_BBL_CR_CTL3_REGISTER;
515
516
517 /**
518 Shared.
519
520 @param ECX MSR_CORE2_PERF_STATUS (0x00000198)
521 @param EAX Lower 32-bits of MSR value.
522 Described by the type MSR_CORE2_PERF_STATUS_REGISTER.
523 @param EDX Upper 32-bits of MSR value.
524 Described by the type MSR_CORE2_PERF_STATUS_REGISTER.
525
526 <b>Example usage</b>
527 @code
528 MSR_CORE2_PERF_STATUS_REGISTER Msr;
529
530 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_PERF_STATUS);
531 AsmWriteMsr64 (MSR_CORE2_PERF_STATUS, Msr.Uint64);
532 @endcode
533 @note MSR_CORE2_PERF_STATUS is defined as MSR_PERF_STATUS in SDM.
534 **/
535 #define MSR_CORE2_PERF_STATUS 0x00000198
536
537 /**
538 MSR information returned for MSR index #MSR_CORE2_PERF_STATUS
539 **/
540 typedef union {
541 ///
542 /// Individual bit fields
543 ///
544 struct {
545 ///
546 /// [Bits 15:0] Current Performance State Value.
547 ///
548 UINT32 CurrentPerformanceStateValue:16;
549 UINT32 Reserved1:15;
550 ///
551 /// [Bit 31] XE Operation (R/O). If set, XE operation is enabled. Default
552 /// is cleared.
553 ///
554 UINT32 XEOperation:1;
555 UINT32 Reserved2:8;
556 ///
557 /// [Bits 44:40] Maximum Bus Ratio (R/O) Indicates maximum bus ratio
558 /// configured for the processor.
559 ///
560 UINT32 MaximumBusRatio:5;
561 UINT32 Reserved3:1;
562 ///
563 /// [Bit 46] Non-Integer Bus Ratio (R/O) Indicates non-integer bus ratio
564 /// is enabled. Applies processors based on Enhanced Intel Core
565 /// microarchitecture.
566 ///
567 UINT32 NonIntegerBusRatio:1;
568 UINT32 Reserved4:17;
569 } Bits;
570 ///
571 /// All bit fields as a 64-bit value
572 ///
573 UINT64 Uint64;
574 } MSR_CORE2_PERF_STATUS_REGISTER;
575
576
577 /**
578 Unique.
579
580 @param ECX MSR_CORE2_THERM2_CTL (0x0000019D)
581 @param EAX Lower 32-bits of MSR value.
582 Described by the type MSR_CORE2_THERM2_CTL_REGISTER.
583 @param EDX Upper 32-bits of MSR value.
584 Described by the type MSR_CORE2_THERM2_CTL_REGISTER.
585
586 <b>Example usage</b>
587 @code
588 MSR_CORE2_THERM2_CTL_REGISTER Msr;
589
590 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_THERM2_CTL);
591 AsmWriteMsr64 (MSR_CORE2_THERM2_CTL, Msr.Uint64);
592 @endcode
593 @note MSR_CORE2_THERM2_CTL is defined as MSR_THERM2_CTL in SDM.
594 **/
595 #define MSR_CORE2_THERM2_CTL 0x0000019D
596
597 /**
598 MSR information returned for MSR index #MSR_CORE2_THERM2_CTL
599 **/
600 typedef union {
601 ///
602 /// Individual bit fields
603 ///
604 struct {
605 UINT32 Reserved1:16;
606 ///
607 /// [Bit 16] TM_SELECT (R/W) Mode of automatic thermal monitor: 1. =
608 /// Thermal Monitor 1 (thermally-initiated on-die modulation of the
609 /// stop-clock duty cycle) 2. = Thermal Monitor 2 (thermally-initiated
610 /// frequency transitions) If bit 3 of the IA32_MISC_ENABLE register is
611 /// cleared, TM_SELECT has no effect. Neither TM1 nor TM2 are enabled.
612 ///
613 UINT32 TM_SELECT:1;
614 UINT32 Reserved2:15;
615 UINT32 Reserved3:32;
616 } Bits;
617 ///
618 /// All bit fields as a 32-bit value
619 ///
620 UINT32 Uint32;
621 ///
622 /// All bit fields as a 64-bit value
623 ///
624 UINT64 Uint64;
625 } MSR_CORE2_THERM2_CTL_REGISTER;
626
627
628 /**
629 Enable Misc. Processor Features (R/W) Allows a variety of processor
630 functions to be enabled and disabled.
631
632 @param ECX MSR_CORE2_IA32_MISC_ENABLE (0x000001A0)
633 @param EAX Lower 32-bits of MSR value.
634 Described by the type MSR_CORE2_IA32_MISC_ENABLE_REGISTER.
635 @param EDX Upper 32-bits of MSR value.
636 Described by the type MSR_CORE2_IA32_MISC_ENABLE_REGISTER.
637
638 <b>Example usage</b>
639 @code
640 MSR_CORE2_IA32_MISC_ENABLE_REGISTER Msr;
641
642 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_IA32_MISC_ENABLE);
643 AsmWriteMsr64 (MSR_CORE2_IA32_MISC_ENABLE, Msr.Uint64);
644 @endcode
645 @note MSR_CORE2_IA32_MISC_ENABLE is defined as IA32_MISC_ENABLE in SDM.
646 **/
647 #define MSR_CORE2_IA32_MISC_ENABLE 0x000001A0
648
649 /**
650 MSR information returned for MSR index #MSR_CORE2_IA32_MISC_ENABLE
651 **/
652 typedef union {
653 ///
654 /// Individual bit fields
655 ///
656 struct {
657 ///
658 /// [Bit 0] Fast-Strings Enable See Table 35-2.
659 ///
660 UINT32 FastStrings:1;
661 UINT32 Reserved1:2;
662 ///
663 /// [Bit 3] Unique. Automatic Thermal Control Circuit Enable (R/W) See
664 /// Table 35-2.
665 ///
666 UINT32 AutomaticThermalControlCircuit:1;
667 UINT32 Reserved2:3;
668 ///
669 /// [Bit 7] Shared. Performance Monitoring Available (R) See Table 35-2.
670 ///
671 UINT32 PerformanceMonitoring:1;
672 UINT32 Reserved3:1;
673 ///
674 /// [Bit 9] Hardware Prefetcher Disable (R/W) When set, disables the
675 /// hardware prefetcher operation on streams of data. When clear
676 /// (default), enables the prefetch queue. Disabling of the hardware
677 /// prefetcher may impact processor performance.
678 ///
679 UINT32 HardwarePrefetcherDisable:1;
680 ///
681 /// [Bit 10] Shared. FERR# Multiplexing Enable (R/W) 1 = FERR# asserted by
682 /// the processor to indicate a pending break event within the processor 0
683 /// = Indicates compatible FERR# signaling behavior This bit must be set
684 /// to 1 to support XAPIC interrupt model usage.
685 ///
686 UINT32 FERR:1;
687 ///
688 /// [Bit 11] Shared. Branch Trace Storage Unavailable (RO) See Table 35-2.
689 ///
690 UINT32 BTS:1;
691 ///
692 /// [Bit 12] Shared. Processor Event Based Sampling Unavailable (RO) See
693 /// Table 35-2.
694 ///
695 UINT32 PEBS:1;
696 ///
697 /// [Bit 13] Shared. TM2 Enable (R/W) When this bit is set (1) and the
698 /// thermal sensor indicates that the die temperature is at the
699 /// pre-determined threshold, the Thermal Monitor 2 mechanism is engaged.
700 /// TM2 will reduce the bus to core ratio and voltage according to the
701 /// value last written to MSR_THERM2_CTL bits 15:0.
702 /// When this bit is clear (0, default), the processor does not change
703 /// the VID signals or the bus to core ratio when the processor enters a
704 /// thermally managed state. The BIOS must enable this feature if the
705 /// TM2 feature flag (CPUID.1:ECX[8]) is set; if the TM2 feature flag is
706 /// not set, this feature is not supported and BIOS must not alter the
707 /// contents of the TM2 bit location. The processor is operating out of
708 /// specification if both this bit and the TM1 bit are set to 0.
709 ///
710 UINT32 TM2:1;
711 UINT32 Reserved4:2;
712 ///
713 /// [Bit 16] Shared. Enhanced Intel SpeedStep Technology Enable (R/W) See
714 /// Table 35-2.
715 ///
716 UINT32 EIST:1;
717 UINT32 Reserved5:1;
718 ///
719 /// [Bit 18] Shared. ENABLE MONITOR FSM (R/W) See Table 35-2.
720 ///
721 UINT32 MONITOR:1;
722 ///
723 /// [Bit 19] Shared. Adjacent Cache Line Prefetch Disable (R/W) When set
724 /// to 1, the processor fetches the cache line that contains data
725 /// currently required by the processor. When set to 0, the processor
726 /// fetches cache lines that comprise a cache line pair (128 bytes).
727 /// Single processor platforms should not set this bit. Server platforms
728 /// should set or clear this bit based on platform performance observed in
729 /// validation and testing. BIOS may contain a setup option that controls
730 /// the setting of this bit.
731 ///
732 UINT32 AdjacentCacheLinePrefetchDisable:1;
733 ///
734 /// [Bit 20] Shared. Enhanced Intel SpeedStep Technology Select Lock
735 /// (R/WO) When set, this bit causes the following bits to become
736 /// read-only: - Enhanced Intel SpeedStep Technology Select Lock (this
737 /// bit), - Enhanced Intel SpeedStep Technology Enable bit. The bit must
738 /// be set before an Enhanced Intel SpeedStep Technology transition is
739 /// requested. This bit is cleared on reset.
740 ///
741 UINT32 EISTLock:1;
742 UINT32 Reserved6:1;
743 ///
744 /// [Bit 22] Shared. Limit CPUID Maxval (R/W) See Table 35-2.
745 ///
746 UINT32 LimitCpuidMaxval:1;
747 ///
748 /// [Bit 23] Shared. xTPR Message Disable (R/W) See Table 35-2.
749 ///
750 UINT32 xTPR_Message_Disable:1;
751 UINT32 Reserved7:8;
752 UINT32 Reserved8:2;
753 ///
754 /// [Bit 34] Unique. XD Bit Disable (R/W) See Table 35-2.
755 ///
756 UINT32 XD:1;
757 UINT32 Reserved9:2;
758 ///
759 /// [Bit 37] Unique. DCU Prefetcher Disable (R/W) When set to 1, The DCU
760 /// L1 data cache prefetcher is disabled. The default value after reset is
761 /// 0. BIOS may write '1' to disable this feature. The DCU prefetcher is
762 /// an L1 data cache prefetcher. When the DCU prefetcher detects multiple
763 /// loads from the same line done within a time limit, the DCU prefetcher
764 /// assumes the next line will be required. The next line is prefetched in
765 /// to the L1 data cache from memory or L2.
766 ///
767 UINT32 DCUPrefetcherDisable:1;
768 ///
769 /// [Bit 38] Shared. IDA Disable (R/W) When set to 1 on processors that
770 /// support IDA, the Intel Dynamic Acceleration feature (IDA) is disabled
771 /// and the IDA_Enable feature flag will be clear (CPUID.06H: EAX[1]=0).
772 /// When set to a 0 on processors that support IDA, CPUID.06H: EAX[1]
773 /// reports the processor's support of IDA is enabled. Note: the power-on
774 /// default value is used by BIOS to detect hardware support of IDA. If
775 /// power-on default value is 1, IDA is available in the processor. If
776 /// power-on default value is 0, IDA is not available.
777 ///
778 UINT32 IDADisable:1;
779 ///
780 /// [Bit 39] Unique. IP Prefetcher Disable (R/W) When set to 1, The IP
781 /// prefetcher is disabled. The default value after reset is 0. BIOS may
782 /// write '1' to disable this feature. The IP prefetcher is an L1 data
783 /// cache prefetcher. The IP prefetcher looks for sequential load history
784 /// to determine whether to prefetch the next expected data into the L1
785 /// cache from memory or L2.
786 ///
787 UINT32 IPPrefetcherDisable:1;
788 UINT32 Reserved10:24;
789 } Bits;
790 ///
791 /// All bit fields as a 64-bit value
792 ///
793 UINT64 Uint64;
794 } MSR_CORE2_IA32_MISC_ENABLE_REGISTER;
795
796
797 /**
798 Unique. Last Branch Record Stack TOS (R/W) Contains an index (bits 0-3)
799 that points to the MSR containing the most recent branch record. See
800 MSR_LASTBRANCH_0_FROM_IP (at 40H).
801
802 @param ECX MSR_CORE2_LASTBRANCH_TOS (0x000001C9)
803 @param EAX Lower 32-bits of MSR value.
804 @param EDX Upper 32-bits of MSR value.
805
806 <b>Example usage</b>
807 @code
808 UINT64 Msr;
809
810 Msr = AsmReadMsr64 (MSR_CORE2_LASTBRANCH_TOS);
811 AsmWriteMsr64 (MSR_CORE2_LASTBRANCH_TOS, Msr);
812 @endcode
813 @note MSR_CORE2_LASTBRANCH_TOS is defined as MSR_LASTBRANCH_TOS in SDM.
814 **/
815 #define MSR_CORE2_LASTBRANCH_TOS 0x000001C9
816
817
818 /**
819 Unique. Last Exception Record From Linear IP (R) Contains a pointer to the
820 last branch instruction that the processor executed prior to the last
821 exception that was generated or the last interrupt that was handled.
822
823 @param ECX MSR_CORE2_LER_FROM_LIP (0x000001DD)
824 @param EAX Lower 32-bits of MSR value.
825 @param EDX Upper 32-bits of MSR value.
826
827 <b>Example usage</b>
828 @code
829 UINT64 Msr;
830
831 Msr = AsmReadMsr64 (MSR_CORE2_LER_FROM_LIP);
832 @endcode
833 @note MSR_CORE2_LER_FROM_LIP is defined as MSR_LER_FROM_LIP in SDM.
834 **/
835 #define MSR_CORE2_LER_FROM_LIP 0x000001DD
836
837
838 /**
839 Unique. Last Exception Record To Linear IP (R) This area contains a pointer
840 to the target of the last branch instruction that the processor executed
841 prior to the last exception that was generated or the last interrupt that
842 was handled.
843
844 @param ECX MSR_CORE2_LER_TO_LIP (0x000001DE)
845 @param EAX Lower 32-bits of MSR value.
846 @param EDX Upper 32-bits of MSR value.
847
848 <b>Example usage</b>
849 @code
850 UINT64 Msr;
851
852 Msr = AsmReadMsr64 (MSR_CORE2_LER_TO_LIP);
853 @endcode
854 @note MSR_CORE2_LER_TO_LIP is defined as MSR_LER_TO_LIP in SDM.
855 **/
856 #define MSR_CORE2_LER_TO_LIP 0x000001DE
857
858
859 /**
860 Unique. Fixed-Function Performance Counter Register n (R/W).
861
862 @param ECX MSR_CORE2_PERF_FIXED_CTRn
863 @param EAX Lower 32-bits of MSR value.
864 @param EDX Upper 32-bits of MSR value.
865
866 <b>Example usage</b>
867 @code
868 UINT64 Msr;
869
870 Msr = AsmReadMsr64 (MSR_CORE2_PERF_FIXED_CTR0);
871 AsmWriteMsr64 (MSR_CORE2_PERF_FIXED_CTR0, Msr);
872 @endcode
873 @note MSR_CORE2_PERF_FIXED_CTR0 is defined as MSR_PERF_FIXED_CTR0 in SDM.
874 MSR_CORE2_PERF_FIXED_CTR1 is defined as MSR_PERF_FIXED_CTR1 in SDM.
875 MSR_CORE2_PERF_FIXED_CTR2 is defined as MSR_PERF_FIXED_CTR2 in SDM.
876 @{
877 **/
878 #define MSR_CORE2_PERF_FIXED_CTR0 0x00000309
879 #define MSR_CORE2_PERF_FIXED_CTR1 0x0000030A
880 #define MSR_CORE2_PERF_FIXED_CTR2 0x0000030B
881 /// @}
882
883
884 /**
885 Unique. RO. This applies to processors that do not support architectural
886 perfmon version 2.
887
888 @param ECX MSR_CORE2_PERF_CAPABILITIES (0x00000345)
889 @param EAX Lower 32-bits of MSR value.
890 Described by the type MSR_CORE2_PERF_CAPABILITIES_REGISTER.
891 @param EDX Upper 32-bits of MSR value.
892 Described by the type MSR_CORE2_PERF_CAPABILITIES_REGISTER.
893
894 <b>Example usage</b>
895 @code
896 MSR_CORE2_PERF_CAPABILITIES_REGISTER Msr;
897
898 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_PERF_CAPABILITIES);
899 AsmWriteMsr64 (MSR_CORE2_PERF_CAPABILITIES, Msr.Uint64);
900 @endcode
901 @note MSR_CORE2_PERF_CAPABILITIES is defined as MSR_PERF_CAPABILITIES in SDM.
902 **/
903 #define MSR_CORE2_PERF_CAPABILITIES 0x00000345
904
905 /**
906 MSR information returned for MSR index #MSR_CORE2_PERF_CAPABILITIES
907 **/
908 typedef union {
909 ///
910 /// Individual bit fields
911 ///
912 struct {
913 ///
914 /// [Bits 5:0] LBR Format. See Table 35-2.
915 ///
916 UINT32 LBR_FMT:6;
917 ///
918 /// [Bit 6] PEBS Record Format.
919 ///
920 UINT32 PEBS_FMT:1;
921 ///
922 /// [Bit 7] PEBSSaveArchRegs. See Table 35-2.
923 ///
924 UINT32 PEBS_ARCH_REG:1;
925 UINT32 Reserved1:24;
926 UINT32 Reserved2:32;
927 } Bits;
928 ///
929 /// All bit fields as a 32-bit value
930 ///
931 UINT32 Uint32;
932 ///
933 /// All bit fields as a 64-bit value
934 ///
935 UINT64 Uint64;
936 } MSR_CORE2_PERF_CAPABILITIES_REGISTER;
937
938
939 /**
940 Unique. Fixed-Function-Counter Control Register (R/W).
941
942 @param ECX MSR_CORE2_PERF_FIXED_CTR_CTRL (0x0000038D)
943 @param EAX Lower 32-bits of MSR value.
944 @param EDX Upper 32-bits of MSR value.
945
946 <b>Example usage</b>
947 @code
948 UINT64 Msr;
949
950 Msr = AsmReadMsr64 (MSR_CORE2_PERF_FIXED_CTR_CTRL);
951 AsmWriteMsr64 (MSR_CORE2_PERF_FIXED_CTR_CTRL, Msr);
952 @endcode
953 @note MSR_CORE2_PERF_FIXED_CTR_CTRL is defined as MSR_PERF_FIXED_CTR_CTRL in SDM.
954 **/
955 #define MSR_CORE2_PERF_FIXED_CTR_CTRL 0x0000038D
956
957
958 /**
959 Unique. See Section 18.4.2, "Global Counter Control Facilities.".
960
961 @param ECX MSR_CORE2_PERF_GLOBAL_STATUS (0x0000038E)
962 @param EAX Lower 32-bits of MSR value.
963 @param EDX Upper 32-bits of MSR value.
964
965 <b>Example usage</b>
966 @code
967 UINT64 Msr;
968
969 Msr = AsmReadMsr64 (MSR_CORE2_PERF_GLOBAL_STATUS);
970 AsmWriteMsr64 (MSR_CORE2_PERF_GLOBAL_STATUS, Msr);
971 @endcode
972 @note MSR_CORE2_PERF_GLOBAL_STATUS is defined as MSR_PERF_GLOBAL_STATUS in SDM.
973 **/
974 #define MSR_CORE2_PERF_GLOBAL_STATUS 0x0000038E
975
976
977 /**
978 Unique. See Section 18.4.2, "Global Counter Control Facilities.".
979
980 @param ECX MSR_CORE2_PERF_GLOBAL_CTRL (0x0000038F)
981 @param EAX Lower 32-bits of MSR value.
982 @param EDX Upper 32-bits of MSR value.
983
984 <b>Example usage</b>
985 @code
986 UINT64 Msr;
987
988 Msr = AsmReadMsr64 (MSR_CORE2_PERF_GLOBAL_CTRL);
989 AsmWriteMsr64 (MSR_CORE2_PERF_GLOBAL_CTRL, Msr);
990 @endcode
991 @note MSR_CORE2_PERF_GLOBAL_CTRL is defined as MSR_PERF_GLOBAL_CTRL in SDM.
992 **/
993 #define MSR_CORE2_PERF_GLOBAL_CTRL 0x0000038F
994
995
996 /**
997 Unique. See Section 18.4.2, "Global Counter Control Facilities.".
998
999 @param ECX MSR_CORE2_PERF_GLOBAL_OVF_CTRL (0x00000390)
1000 @param EAX Lower 32-bits of MSR value.
1001 @param EDX Upper 32-bits of MSR value.
1002
1003 <b>Example usage</b>
1004 @code
1005 UINT64 Msr;
1006
1007 Msr = AsmReadMsr64 (MSR_CORE2_PERF_GLOBAL_OVF_CTRL);
1008 AsmWriteMsr64 (MSR_CORE2_PERF_GLOBAL_OVF_CTRL, Msr);
1009 @endcode
1010 @note MSR_CORE2_PERF_GLOBAL_OVF_CTRL is defined as MSR_PERF_GLOBAL_OVF_CTRL in SDM.
1011 **/
1012 #define MSR_CORE2_PERF_GLOBAL_OVF_CTRL 0x00000390
1013
1014
1015 /**
1016 Unique. See Table 35-2. See Section 18.4.4, "Processor Event Based Sampling
1017 (PEBS).".
1018
1019 @param ECX MSR_CORE2_PEBS_ENABLE (0x000003F1)
1020 @param EAX Lower 32-bits of MSR value.
1021 Described by the type MSR_CORE2_PEBS_ENABLE_REGISTER.
1022 @param EDX Upper 32-bits of MSR value.
1023 Described by the type MSR_CORE2_PEBS_ENABLE_REGISTER.
1024
1025 <b>Example usage</b>
1026 @code
1027 MSR_CORE2_PEBS_ENABLE_REGISTER Msr;
1028
1029 Msr.Uint64 = AsmReadMsr64 (MSR_CORE2_PEBS_ENABLE);
1030 AsmWriteMsr64 (MSR_CORE2_PEBS_ENABLE, Msr.Uint64);
1031 @endcode
1032 @note MSR_CORE2_PEBS_ENABLE is defined as MSR_PEBS_ENABLE in SDM.
1033 **/
1034 #define MSR_CORE2_PEBS_ENABLE 0x000003F1
1035
1036 /**
1037 MSR information returned for MSR index #MSR_CORE2_PEBS_ENABLE
1038 **/
1039 typedef union {
1040 ///
1041 /// Individual bit fields
1042 ///
1043 struct {
1044 ///
1045 /// [Bit 0] Enable PEBS on IA32_PMC0. (R/W).
1046 ///
1047 UINT32 Enable:1;
1048 UINT32 Reserved1:31;
1049 UINT32 Reserved2:32;
1050 } Bits;
1051 ///
1052 /// All bit fields as a 32-bit value
1053 ///
1054 UINT32 Uint32;
1055 ///
1056 /// All bit fields as a 64-bit value
1057 ///
1058 UINT64 Uint64;
1059 } MSR_CORE2_PEBS_ENABLE_REGISTER;
1060
1061
1062 /**
1063 Unique. GBUSQ Event Control/Counter Register (R/W) Apply to Intel Xeon
1064 processor 7400 series (processor signature 06_1D) only. See Section 17.2.2.
1065
1066 @param ECX MSR_CORE2_EMON_L3_CTR_CTLn
1067 @param EAX Lower 32-bits of MSR value.
1068 @param EDX Upper 32-bits of MSR value.
1069
1070 <b>Example usage</b>
1071 @code
1072 UINT64 Msr;
1073
1074 Msr = AsmReadMsr64 (MSR_CORE2_EMON_L3_CTR_CTL0);
1075 AsmWriteMsr64 (MSR_CORE2_EMON_L3_CTR_CTL0, Msr);
1076 @endcode
1077 @note MSR_CORE2_EMON_L3_CTR_CTL0 is defined as MSR_EMON_L3_CTR_CTL0 in SDM.
1078 MSR_CORE2_EMON_L3_CTR_CTL1 is defined as MSR_EMON_L3_CTR_CTL1 in SDM.
1079 MSR_CORE2_EMON_L3_CTR_CTL2 is defined as MSR_EMON_L3_CTR_CTL2 in SDM.
1080 MSR_CORE2_EMON_L3_CTR_CTL3 is defined as MSR_EMON_L3_CTR_CTL3 in SDM.
1081 MSR_CORE2_EMON_L3_CTR_CTL4 is defined as MSR_EMON_L3_CTR_CTL4 in SDM.
1082 MSR_CORE2_EMON_L3_CTR_CTL5 is defined as MSR_EMON_L3_CTR_CTL5 in SDM.
1083 MSR_CORE2_EMON_L3_CTR_CTL6 is defined as MSR_EMON_L3_CTR_CTL6 in SDM.
1084 MSR_CORE2_EMON_L3_CTR_CTL7 is defined as MSR_EMON_L3_CTR_CTL7 in SDM.
1085 @{
1086 **/
1087 #define MSR_CORE2_EMON_L3_CTR_CTL0 0x000107CC
1088 #define MSR_CORE2_EMON_L3_CTR_CTL1 0x000107CD
1089 #define MSR_CORE2_EMON_L3_CTR_CTL2 0x000107CE
1090 #define MSR_CORE2_EMON_L3_CTR_CTL3 0x000107CF
1091 #define MSR_CORE2_EMON_L3_CTR_CTL4 0x000107D0
1092 #define MSR_CORE2_EMON_L3_CTR_CTL5 0x000107D1
1093 #define MSR_CORE2_EMON_L3_CTR_CTL6 0x000107D2
1094 #define MSR_CORE2_EMON_L3_CTR_CTL7 0x000107D3
1095 /// @}
1096
1097
1098 /**
1099 Unique. L3/FSB Common Control Register (R/W) Apply to Intel Xeon processor
1100 7400 series (processor signature 06_1D) only. See Section 17.2.2.
1101
1102 @param ECX MSR_CORE2_EMON_L3_GL_CTL (0x000107D8)
1103 @param EAX Lower 32-bits of MSR value.
1104 @param EDX Upper 32-bits of MSR value.
1105
1106 <b>Example usage</b>
1107 @code
1108 UINT64 Msr;
1109
1110 Msr = AsmReadMsr64 (MSR_CORE2_EMON_L3_GL_CTL);
1111 AsmWriteMsr64 (MSR_CORE2_EMON_L3_GL_CTL, Msr);
1112 @endcode
1113 @note MSR_CORE2_EMON_L3_GL_CTL is defined as MSR_EMON_L3_GL_CTL in SDM.
1114 **/
1115 #define MSR_CORE2_EMON_L3_GL_CTL 0x000107D8
1116
1117 #endif