• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** @file
2   MSR Definitions for Intel Atom processors based on the Goldmont microarchitecture.
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.5.
21 
22 **/
23 
24 #ifndef __GOLDMONT_MSR_H__
25 #define __GOLDMONT_MSR_H__
26 
27 #include <Register/ArchitecturalMsr.h>
28 
29 /**
30   Core. Control Features in Intel 64Processor (R/W).
31 
32   @param  ECX  MSR_GOLDMONT_FEATURE_CONTROL (0x0000003A)
33   @param  EAX  Lower 32-bits of MSR value.
34                Described by the type MSR_GOLDMONT_FEATURE_CONTROL_REGISTER.
35   @param  EDX  Upper 32-bits of MSR value.
36                Described by the type MSR_GOLDMONT_FEATURE_CONTROL_REGISTER.
37 
38   <b>Example usage</b>
39   @code
40   MSR_GOLDMONT_FEATURE_CONTROL_REGISTER  Msr;
41 
42   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_FEATURE_CONTROL);
43   AsmWriteMsr64 (MSR_GOLDMONT_FEATURE_CONTROL, Msr.Uint64);
44   @endcode
45   @note MSR_GOLDMONT_FEATURE_CONTROL is defined as IA32_FEATURE_CONTROL in SDM.
46 **/
47 #define MSR_GOLDMONT_FEATURE_CONTROL             0x0000003A
48 
49 /**
50   MSR information returned for MSR index #MSR_GOLDMONT_FEATURE_CONTROL
51 **/
52 typedef union {
53   ///
54   /// Individual bit fields
55   ///
56   struct {
57     ///
58     /// [Bit 0] Lock bit (R/WL)
59     ///
60     UINT32  Lock:1;
61     ///
62     /// [Bit 1] Enable VMX inside SMX operation (R/WL)
63     ///
64     UINT32  EnableVmxInsideSmx:1;
65     ///
66     /// [Bit 2] Enable VMX outside SMX operation (R/WL)
67     ///
68     UINT32  EnableVmxOutsideSmx:1;
69     UINT32  Reserved1:5;
70     ///
71     /// [Bits 14:8] SENTER local function enables (R/WL)
72     ///
73     UINT32  SenterLocalFunctionEnables:7;
74     ///
75     /// [Bit 15] SENTER global functions enable (R/WL)
76     ///
77     UINT32  SenterGlobalEnable:1;
78     UINT32  Reserved2:2;
79     ///
80     /// [Bit 18] SGX global functions enable (R/WL)
81     ///
82     UINT32  SgxEnable:1;
83     UINT32  Reserved3:13;
84     UINT32  Reserved4:32;
85   } Bits;
86   ///
87   /// All bit fields as a 32-bit value
88   ///
89   UINT32  Uint32;
90   ///
91   /// All bit fields as a 64-bit value
92   ///
93   UINT64  Uint64;
94 } MSR_GOLDMONT_FEATURE_CONTROL_REGISTER;
95 
96 
97 /**
98   Package. See http://biosbits.org.
99 
100   @param  ECX  MSR_GOLDMONT_PLATFORM_INFO (0x000000CE)
101   @param  EAX  Lower 32-bits of MSR value.
102                Described by the type MSR_GOLDMONT_PLATFORM_INFO_REGISTER.
103   @param  EDX  Upper 32-bits of MSR value.
104                Described by the type MSR_GOLDMONT_PLATFORM_INFO_REGISTER.
105 
106   <b>Example usage</b>
107   @code
108   MSR_GOLDMONT_PLATFORM_INFO_REGISTER  Msr;
109 
110   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PLATFORM_INFO);
111   AsmWriteMsr64 (MSR_GOLDMONT_PLATFORM_INFO, Msr.Uint64);
112   @endcode
113   @note MSR_GOLDMONT_PLATFORM_INFO is defined as MSR_PLATFORM_INFO in SDM.
114 **/
115 #define MSR_GOLDMONT_PLATFORM_INFO               0x000000CE
116 
117 /**
118   MSR information returned for MSR index #MSR_GOLDMONT_PLATFORM_INFO
119 **/
120 typedef union {
121   ///
122   /// Individual bit fields
123   ///
124   struct {
125     UINT32  Reserved1:8;
126     ///
127     /// [Bits 15:8] Package. Maximum Non-Turbo Ratio (R/O)  The is the ratio
128     /// of the frequency that invariant TSC runs at. Frequency = ratio * 100
129     /// MHz.
130     ///
131     UINT32  MaximumNonTurboRatio:8;
132     UINT32  Reserved2:12;
133     ///
134     /// [Bit 28] Package. Programmable Ratio Limit for Turbo Mode (R/O)  When
135     /// set to 1, indicates that Programmable Ratio Limits for Turbo mode is
136     /// enabled, and when set to 0, indicates Programmable Ratio Limits for
137     /// Turbo mode is disabled.
138     ///
139     UINT32  RatioLimit:1;
140     ///
141     /// [Bit 29] Package. Programmable TDP Limit for Turbo Mode (R/O)  When
142     /// set to 1, indicates that TDP Limits for Turbo mode are programmable,
143     /// and when set to 0, indicates TDP Limit for Turbo mode is not
144     /// programmable.
145     ///
146     UINT32  TDPLimit:1;
147     ///
148     /// [Bit 30] Package. Programmable TJ OFFSET (R/O)  When set to 1,
149     /// indicates that MSR_TEMPERATURE_TARGET.[27:24] is valid and writable to
150     /// specify an temperature offset.
151     ///
152     UINT32  TJOFFSET:1;
153     UINT32  Reserved3:1;
154     UINT32  Reserved4:8;
155     ///
156     /// [Bits 47:40] Package. Maximum Efficiency Ratio (R/O)  The is the
157     /// minimum ratio (maximum efficiency) that the processor can operates, in
158     /// units of 100MHz.
159     ///
160     UINT32  MaximumEfficiencyRatio:8;
161     UINT32  Reserved5:16;
162   } Bits;
163   ///
164   /// All bit fields as a 64-bit value
165   ///
166   UINT64  Uint64;
167 } MSR_GOLDMONT_PLATFORM_INFO_REGISTER;
168 
169 
170 /**
171   Core. C-State Configuration Control (R/W)  Note: C-state values are
172   processor specific C-state code names, unrelated to MWAIT extension C-state
173   parameters or ACPI CStates. See http://biosbits.org.
174 
175   @param  ECX  MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL (0x000000E2)
176   @param  EAX  Lower 32-bits of MSR value.
177                Described by the type
178                MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER.
179   @param  EDX  Upper 32-bits of MSR value.
180                Described by the type
181                MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER.
182 
183   <b>Example usage</b>
184   @code
185   MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER  Msr;
186 
187   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL);
188   AsmWriteMsr64 (MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL, Msr.Uint64);
189   @endcode
190   @note MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL is defined as MSR_PKG_CST_CONFIG_CONTROL in SDM.
191 **/
192 #define MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL      0x000000E2
193 
194 /**
195   MSR information returned for MSR index #MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL
196 **/
197 typedef union {
198   ///
199   /// Individual bit fields
200   ///
201   struct {
202     ///
203     /// [Bits 3:0] Package C-State Limit (R/W)  Specifies the lowest
204     /// processor-specific C-state code name (consuming the least power). for
205     /// the package. The default is set as factory-configured package C-state
206     /// limit. The following C-state code name encodings are supported: 0000b:
207     /// No limit 0001b: C1 0010b: C3 0011b: C6 0100b: C7 0101b: C7S 0110b: C8
208     /// 0111b: C9 1000b: C10.
209     ///
210     UINT32  Limit:4;
211     UINT32  Reserved1:6;
212     ///
213     /// [Bit 10] I/O MWAIT Redirection Enable (R/W)  When set, will map
214     /// IO_read instructions sent to IO register specified by
215     /// MSR_PMG_IO_CAPTURE_BASE to MWAIT instructions.
216     ///
217     UINT32  IO_MWAIT:1;
218     UINT32  Reserved2:4;
219     ///
220     /// [Bit 15] CFG Lock (R/WO)  When set, lock bits 15:0 of this register
221     /// until next reset.
222     ///
223     UINT32  CFGLock:1;
224     UINT32  Reserved3:16;
225     UINT32  Reserved4:32;
226   } Bits;
227   ///
228   /// All bit fields as a 32-bit value
229   ///
230   UINT32  Uint32;
231   ///
232   /// All bit fields as a 64-bit value
233   ///
234   UINT64  Uint64;
235 } MSR_GOLDMONT_PKG_CST_CONFIG_CONTROL_REGISTER;
236 
237 
238 /**
239   Core. Enhanced SMM Capabilities (SMM-RO) Reports SMM capability Enhancement.
240   Accessible only while in SMM.
241 
242   @param  ECX  MSR_GOLDMONT_SMM_MCA_CAP (0x0000017D)
243   @param  EAX  Lower 32-bits of MSR value.
244                Described by the type MSR_GOLDMONT_SMM_MCA_CAP_REGISTER.
245   @param  EDX  Upper 32-bits of MSR value.
246                Described by the type MSR_GOLDMONT_SMM_MCA_CAP_REGISTER.
247 
248   <b>Example usage</b>
249   @code
250   MSR_GOLDMONT_SMM_MCA_CAP_REGISTER  Msr;
251 
252   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_MCA_CAP);
253   AsmWriteMsr64 (MSR_GOLDMONT_SMM_MCA_CAP, Msr.Uint64);
254   @endcode
255   @note MSR_GOLDMONT_SMM_MCA_CAP is defined as MSR_SMM_MCA_CAP in SDM.
256 **/
257 #define MSR_GOLDMONT_SMM_MCA_CAP                 0x0000017D
258 
259 /**
260   MSR information returned for MSR index #MSR_GOLDMONT_SMM_MCA_CAP
261 **/
262 typedef union {
263   ///
264   /// Individual bit fields
265   ///
266   struct {
267     UINT32  Reserved1:32;
268     UINT32  Reserved2:26;
269     ///
270     /// [Bit 58] SMM_Code_Access_Chk (SMM-RO) If set to 1 indicates that the
271     /// SMM code access restriction is supported and the
272     /// MSR_SMM_FEATURE_CONTROL is supported.
273     ///
274     UINT32  SMM_Code_Access_Chk:1;
275     ///
276     /// [Bit 59] Long_Flow_Indication (SMM-RO) If set to 1 indicates that the
277     /// SMM long flow indicator is supported and the MSR_SMM_DELAYED is
278     /// supported.
279     ///
280     UINT32  Long_Flow_Indication:1;
281     UINT32  Reserved3:4;
282   } Bits;
283   ///
284   /// All bit fields as a 64-bit value
285   ///
286   UINT64  Uint64;
287 } MSR_GOLDMONT_SMM_MCA_CAP_REGISTER;
288 
289 
290 /**
291   Enable Misc. Processor Features (R/W)  Allows a variety of processor
292   functions to be enabled and disabled.
293 
294   @param  ECX  MSR_GOLDMONT_IA32_MISC_ENABLE (0x000001A0)
295   @param  EAX  Lower 32-bits of MSR value.
296                Described by the type MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER.
297   @param  EDX  Upper 32-bits of MSR value.
298                Described by the type MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER.
299 
300   <b>Example usage</b>
301   @code
302   MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER  Msr;
303 
304   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_MISC_ENABLE);
305   AsmWriteMsr64 (MSR_GOLDMONT_IA32_MISC_ENABLE, Msr.Uint64);
306   @endcode
307   @note MSR_GOLDMONT_IA32_MISC_ENABLE is defined as IA32_MISC_ENABLE in SDM.
308 **/
309 #define MSR_GOLDMONT_IA32_MISC_ENABLE            0x000001A0
310 
311 /**
312   MSR information returned for MSR index #MSR_GOLDMONT_IA32_MISC_ENABLE
313 **/
314 typedef union {
315   ///
316   /// Individual bit fields
317   ///
318   struct {
319     ///
320     /// [Bit 0] Core. Fast-Strings Enable See Table 35-2.
321     ///
322     UINT32  FastStrings:1;
323     UINT32  Reserved1:2;
324     ///
325     /// [Bit 3] Package. Automatic Thermal Control Circuit Enable (R/W) See
326     /// Table 35-2. Default value is 1.
327     ///
328     UINT32  AutomaticThermalControlCircuit:1;
329     UINT32  Reserved2:3;
330     ///
331     /// [Bit 7] Core. Performance Monitoring Available (R) See Table 35-2.
332     ///
333     UINT32  PerformanceMonitoring:1;
334     UINT32  Reserved3:3;
335     ///
336     /// [Bit 11] Core. Branch Trace Storage Unavailable (RO) See Table 35-2.
337     ///
338     UINT32  BTS:1;
339     ///
340     /// [Bit 12] Core. Processor Event Based Sampling Unavailable (RO) See
341     /// Table 35-2.
342     ///
343     UINT32  PEBS:1;
344     UINT32  Reserved4:3;
345     ///
346     /// [Bit 16] Package. Enhanced Intel SpeedStep Technology Enable (R/W) See
347     /// Table 35-2.
348     ///
349     UINT32  EIST:1;
350     UINT32  Reserved5:1;
351     ///
352     /// [Bit 18] Core. ENABLE MONITOR FSM (R/W) See Table 35-2.
353     ///
354     UINT32  MONITOR:1;
355     UINT32  Reserved6:3;
356     ///
357     /// [Bit 22] Core. Limit CPUID Maxval (R/W) See Table 35-2.
358     ///
359     UINT32  LimitCpuidMaxval:1;
360     ///
361     /// [Bit 23] Package. xTPR Message Disable (R/W) See Table 35-2.
362     ///
363     UINT32  xTPR_Message_Disable:1;
364     UINT32  Reserved7:8;
365     UINT32  Reserved8:2;
366     ///
367     /// [Bit 34] Core. XD Bit Disable (R/W) See Table 35-2.
368     ///
369     UINT32  XD:1;
370     UINT32  Reserved9:3;
371     ///
372     /// [Bit 38] Package. Turbo Mode Disable (R/W) When set to 1 on processors
373     /// that support Intel Turbo Boost Technology, the turbo mode feature is
374     /// disabled and the IDA_Enable feature flag will be clear (CPUID.06H:
375     /// EAX[1]=0). When set to a 0 on processors that support IDA, CPUID.06H:
376     /// EAX[1] reports the processor's support of turbo mode is enabled. Note:
377     /// the power-on default value is used by BIOS to detect hardware support
378     /// of turbo mode. If power-on default value is 1, turbo mode is available
379     /// in the processor. If power-on default value is 0, turbo mode is not
380     /// available.
381     ///
382     UINT32  TurboModeDisable:1;
383     UINT32  Reserved10:25;
384   } Bits;
385   ///
386   /// All bit fields as a 64-bit value
387   ///
388   UINT64  Uint64;
389 } MSR_GOLDMONT_IA32_MISC_ENABLE_REGISTER;
390 
391 
392 /**
393   Miscellaneous Feature Control (R/W).
394 
395   @param  ECX  MSR_GOLDMONT_MISC_FEATURE_CONTROL (0x000001A4)
396   @param  EAX  Lower 32-bits of MSR value.
397                Described by the type MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER.
398   @param  EDX  Upper 32-bits of MSR value.
399                Described by the type MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER.
400 
401   <b>Example usage</b>
402   @code
403   MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER  Msr;
404 
405   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_MISC_FEATURE_CONTROL);
406   AsmWriteMsr64 (MSR_GOLDMONT_MISC_FEATURE_CONTROL, Msr.Uint64);
407   @endcode
408   @note MSR_GOLDMONT_MISC_FEATURE_CONTROL is defined as MSR_MISC_FEATURE_CONTROL in SDM.
409 **/
410 #define MSR_GOLDMONT_MISC_FEATURE_CONTROL        0x000001A4
411 
412 /**
413   MSR information returned for MSR index #MSR_GOLDMONT_MISC_FEATURE_CONTROL
414 **/
415 typedef union {
416   ///
417   /// Individual bit fields
418   ///
419   struct {
420     ///
421     /// [Bit 0] Core. L2 Hardware Prefetcher Disable (R/W)  If 1, disables the
422     /// L2 hardware prefetcher, which fetches additional lines of code or data
423     /// into the L2 cache.
424     ///
425     UINT32  L2HardwarePrefetcherDisable:1;
426     UINT32  Reserved1:1;
427     ///
428     /// [Bit 2] Core. DCU Hardware Prefetcher Disable (R/W)  If 1, disables
429     /// the L1 data cache prefetcher, which fetches the next cache line into
430     /// L1 data cache.
431     ///
432     UINT32  DCUHardwarePrefetcherDisable:1;
433     UINT32  Reserved2:29;
434     UINT32  Reserved3:32;
435   } Bits;
436   ///
437   /// All bit fields as a 32-bit value
438   ///
439   UINT32  Uint32;
440   ///
441   /// All bit fields as a 64-bit value
442   ///
443   UINT64  Uint64;
444 } MSR_GOLDMONT_MISC_FEATURE_CONTROL_REGISTER;
445 
446 
447 /**
448   Package. See http://biosbits.org.
449 
450   @param  ECX  MSR_GOLDMONT_MISC_PWR_MGMT (0x000001AA)
451   @param  EAX  Lower 32-bits of MSR value.
452                Described by the type MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER.
453   @param  EDX  Upper 32-bits of MSR value.
454                Described by the type MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER.
455 
456   <b>Example usage</b>
457   @code
458   MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER  Msr;
459 
460   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_MISC_PWR_MGMT);
461   AsmWriteMsr64 (MSR_GOLDMONT_MISC_PWR_MGMT, Msr.Uint64);
462   @endcode
463   @note MSR_GOLDMONT_MISC_PWR_MGMT is defined as MSR_MISC_PWR_MGMT in SDM.
464 **/
465 #define MSR_GOLDMONT_MISC_PWR_MGMT               0x000001AA
466 
467 /**
468   MSR information returned for MSR index #MSR_GOLDMONT_MISC_PWR_MGMT
469 **/
470 typedef union {
471   ///
472   /// Individual bit fields
473   ///
474   struct {
475     ///
476     /// [Bit 0] EIST Hardware Coordination Disable (R/W) When 0, enables
477     /// hardware coordination of Enhanced Intel Speedstep Technology request
478     /// from processor cores; When 1, disables hardware coordination of
479     /// Enhanced Intel Speedstep Technology requests.
480     ///
481     UINT32  EISTHardwareCoordinationDisable:1;
482     UINT32  Reserved1:21;
483     ///
484     /// [Bit 22] Thermal Interrupt Coordination Enable (R/W)  If set, then
485     /// thermal interrupt on one core is routed to all cores.
486     ///
487     UINT32  ThermalInterruptCoordinationEnable:1;
488     UINT32  Reserved2:9;
489     UINT32  Reserved3:32;
490   } Bits;
491   ///
492   /// All bit fields as a 32-bit value
493   ///
494   UINT32  Uint32;
495   ///
496   /// All bit fields as a 64-bit value
497   ///
498   UINT64  Uint64;
499 } MSR_GOLDMONT_MISC_PWR_MGMT_REGISTER;
500 
501 
502 /**
503   Package. Maximum Ratio Limit of Turbo Mode by Core Groups (RW) Specifies
504   Maximum Ratio Limit for each Core Group. Max ratio for groups with more
505   cores must decrease monotonically. For groups with less than 4 cores, the
506   max ratio must be 32 or less. For groups with 4-5 cores, the max ratio must
507   be 22 or less. For groups with more than 5 cores, the max ratio must be 16
508   or less..
509 
510   @param  ECX  MSR_GOLDMONT_TURBO_RATIO_LIMIT (0x000001AD)
511   @param  EAX  Lower 32-bits of MSR value.
512                Described by the type MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER.
513   @param  EDX  Upper 32-bits of MSR value.
514                Described by the type MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER.
515 
516   <b>Example usage</b>
517   @code
518   MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER  Msr;
519 
520   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_TURBO_RATIO_LIMIT);
521   AsmWriteMsr64 (MSR_GOLDMONT_TURBO_RATIO_LIMIT, Msr.Uint64);
522   @endcode
523   @note MSR_GOLDMONT_TURBO_RATIO_LIMIT is defined as MSR_TURBO_RATIO_LIMIT in SDM.
524 **/
525 #define MSR_GOLDMONT_TURBO_RATIO_LIMIT           0x000001AD
526 
527 /**
528   MSR information returned for MSR index #MSR_GOLDMONT_TURBO_RATIO_LIMIT
529 **/
530 typedef union {
531   ///
532   /// Individual bit fields
533   ///
534   struct {
535     ///
536     /// [Bits 7:0] Package. Maximum Ratio Limit for Active cores in Group 0
537     /// Maximum turbo ratio limit when number of active cores is less or equal
538     /// to Group 0 threshold.
539     ///
540     UINT32  MaxRatioLimitGroup0:8;
541     ///
542     /// [Bits 15:8] Package. Maximum Ratio Limit for Active cores in Group 1
543     /// Maximum turbo ratio limit when number of active cores is less or equal
544     /// to Group 1 threshold and greater than Group 0 threshold.
545     ///
546     UINT32  MaxRatioLimitGroup1:8;
547     ///
548     /// [Bits 23:16] Package. Maximum Ratio Limit for Active cores in Group 2
549     /// Maximum turbo ratio limit when number of active cores is less or equal
550     /// to Group 2 threshold and greater than Group 1 threshold.
551     ///
552     UINT32  MaxRatioLimitGroup2:8;
553     ///
554     /// [Bits 31:24] Package. Maximum Ratio Limit for Active cores in Group 3
555     /// Maximum turbo ratio limit when number of active cores is less or equal
556     /// to Group 3 threshold and greater than Group 2 threshold.
557     ///
558     UINT32  MaxRatioLimitGroup3:8;
559     ///
560     /// [Bits 39:32] Package. Maximum Ratio Limit for Active cores in Group 4
561     /// Maximum turbo ratio limit when number of active cores is less or equal
562     /// to Group 4 threshold and greater than Group 3 threshold.
563     ///
564     UINT32  MaxRatioLimitGroup4:8;
565     ///
566     /// [Bits 47:40] Package. Maximum Ratio Limit for Active cores in Group 5
567     /// Maximum turbo ratio limit when number of active cores is less or equal
568     /// to Group 5 threshold and greater than Group 4 threshold.
569     ///
570     UINT32  MaxRatioLimitGroup5:8;
571     ///
572     /// [Bits 55:48] Package. Maximum Ratio Limit for Active cores in Group 6
573     /// Maximum turbo ratio limit when number of active cores is less or equal
574     /// to Group 6 threshold and greater than Group 5 threshold.
575     ///
576     UINT32  MaxRatioLimitGroup6:8;
577     ///
578     /// [Bits 63:56] Package. Maximum Ratio Limit for Active cores in Group 7
579     /// Maximum turbo ratio limit when number of active cores is less or equal
580     /// to Group 7 threshold and greater than Group 6 threshold.
581     ///
582     UINT32  MaxRatioLimitGroup7:8;
583   } Bits;
584   ///
585   /// All bit fields as a 64-bit value
586   ///
587   UINT64  Uint64;
588 } MSR_GOLDMONT_TURBO_RATIO_LIMIT_REGISTER;
589 
590 
591 /**
592   Package. Group Size of Active Cores for Turbo Mode Operation (RW) Writes of
593   0 threshold is ignored.
594 
595   @param  ECX  MSR_GOLDMONT_TURBO_GROUP_CORECNT (0x000001AE)
596   @param  EAX  Lower 32-bits of MSR value.
597                Described by the type MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER.
598   @param  EDX  Upper 32-bits of MSR value.
599                Described by the type MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER.
600 
601   <b>Example usage</b>
602   @code
603   MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER  Msr;
604 
605   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_TURBO_GROUP_CORECNT);
606   AsmWriteMsr64 (MSR_GOLDMONT_TURBO_GROUP_CORECNT, Msr.Uint64);
607   @endcode
608   @note MSR_GOLDMONT_TURBO_GROUP_CORECNT is defined as MSR_TURBO_GROUP_CORECNT in SDM.
609 **/
610 #define MSR_GOLDMONT_TURBO_GROUP_CORECNT         0x000001AE
611 
612 /**
613   MSR information returned for MSR index #MSR_GOLDMONT_TURBO_GROUP_CORECNT
614 **/
615 typedef union {
616   ///
617   /// Individual bit fields
618   ///
619   struct {
620     ///
621     /// [Bits 7:0] Package. Group 0 Core Count Threshold Maximum number of
622     /// active cores to operate under Group 0 Max Turbo Ratio limit.
623     ///
624     UINT32  CoreCountThresholdGroup0:8;
625     ///
626     /// [Bits 15:8] Package. Group 1 Core Count Threshold Maximum number of
627     /// active cores to operate under Group 1 Max Turbo Ratio limit. Must be
628     /// greater than Group 0 Core Count.
629     ///
630     UINT32  CoreCountThresholdGroup1:8;
631     ///
632     /// [Bits 23:16] Package. Group 2 Core Count Threshold Maximum number of
633     /// active cores to operate under Group 2 Max Turbo Ratio limit. Must be
634     /// greater than Group 1 Core Count.
635     ///
636     UINT32  CoreCountThresholdGroup2:8;
637     ///
638     /// [Bits 31:24] Package. Group 3 Core Count Threshold Maximum number of
639     /// active cores to operate under Group 3 Max Turbo Ratio limit. Must be
640     /// greater than Group 2 Core Count.
641     ///
642     UINT32  CoreCountThresholdGroup3:8;
643     ///
644     /// [Bits 39:32] Package. Group 4 Core Count Threshold Maximum number of
645     /// active cores to operate under Group 4 Max Turbo Ratio limit. Must be
646     /// greater than Group 3 Core Count.
647     ///
648     UINT32  CoreCountThresholdGroup4:8;
649     ///
650     /// [Bits 47:40] Package. Group 5 Core Count Threshold Maximum number of
651     /// active cores to operate under Group 5 Max Turbo Ratio limit. Must be
652     /// greater than Group 4 Core Count.
653     ///
654     UINT32  CoreCountThresholdGroup5:8;
655     ///
656     /// [Bits 55:48] Package. Group 6 Core Count Threshold Maximum number of
657     /// active cores to operate under Group 6 Max Turbo Ratio limit. Must be
658     /// greater than Group 5 Core Count.
659     ///
660     UINT32  CoreCountThresholdGroup6:8;
661     ///
662     /// [Bits 63:56] Package. Group 7 Core Count Threshold Maximum number of
663     /// active cores to operate under Group 7 Max Turbo Ratio limit. Must be
664     /// greater than Group 6 Core Count and not less than the total number of
665     /// processor cores in the package. E.g. specify 255.
666     ///
667     UINT32  CoreCountThresholdGroup7:8;
668   } Bits;
669   ///
670   /// All bit fields as a 64-bit value
671   ///
672   UINT64  Uint64;
673 } MSR_GOLDMONT_TURBO_GROUP_CORECNT_REGISTER;
674 
675 
676 /**
677   Core. Last Branch Record Filtering Select Register (R/W)  See Section
678   17.7.2, "Filtering of Last Branch Records.".
679 
680   @param  ECX  MSR_GOLDMONT_LBR_SELECT (0x000001C8)
681   @param  EAX  Lower 32-bits of MSR value.
682                Described by the type MSR_GOLDMONT_LBR_SELECT_REGISTER.
683   @param  EDX  Upper 32-bits of MSR value.
684                Described by the type MSR_GOLDMONT_LBR_SELECT_REGISTER.
685 
686   <b>Example usage</b>
687   @code
688   MSR_GOLDMONT_LBR_SELECT_REGISTER  Msr;
689 
690   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_LBR_SELECT);
691   AsmWriteMsr64 (MSR_GOLDMONT_LBR_SELECT, Msr.Uint64);
692   @endcode
693   @note MSR_GOLDMONT_LBR_SELECT is defined as MSR_LBR_SELECT in SDM.
694 **/
695 #define MSR_GOLDMONT_LBR_SELECT                  0x000001C8
696 
697 /**
698   MSR information returned for MSR index #MSR_GOLDMONT_LBR_SELECT
699 **/
700 typedef union {
701   ///
702   /// Individual bit fields
703   ///
704   struct {
705     ///
706     /// [Bit 0] CPL_EQ_0.
707     ///
708     UINT32  CPL_EQ_0:1;
709     ///
710     /// [Bit 1] CPL_NEQ_0.
711     ///
712     UINT32  CPL_NEQ_0:1;
713     ///
714     /// [Bit 2] JCC.
715     ///
716     UINT32  JCC:1;
717     ///
718     /// [Bit 3] NEAR_REL_CALL.
719     ///
720     UINT32  NEAR_REL_CALL:1;
721     ///
722     /// [Bit 4] NEAR_IND_CALL.
723     ///
724     UINT32  NEAR_IND_CALL:1;
725     ///
726     /// [Bit 5] NEAR_RET.
727     ///
728     UINT32  NEAR_RET:1;
729     ///
730     /// [Bit 6] NEAR_IND_JMP.
731     ///
732     UINT32  NEAR_IND_JMP:1;
733     ///
734     /// [Bit 7] NEAR_REL_JMP.
735     ///
736     UINT32  NEAR_REL_JMP:1;
737     ///
738     /// [Bit 8] FAR_BRANCH.
739     ///
740     UINT32  FAR_BRANCH:1;
741     ///
742     /// [Bit 9] EN_CALL_STACK.
743     ///
744     UINT32  EN_CALL_STACK:1;
745     UINT32  Reserved1:22;
746     UINT32  Reserved2:32;
747   } Bits;
748   ///
749   /// All bit fields as a 32-bit value
750   ///
751   UINT32  Uint32;
752   ///
753   /// All bit fields as a 64-bit value
754   ///
755   UINT64  Uint64;
756 } MSR_GOLDMONT_LBR_SELECT_REGISTER;
757 
758 
759 /**
760   Core. Last Branch Record Stack TOS (R/W)  Contains an index (bits 0-4) that
761   points to the MSR containing the most recent branch record. See
762   MSR_LASTBRANCH_0_FROM_IP.
763 
764   @param  ECX  MSR_GOLDMONT_LASTBRANCH_TOS (0x000001C9)
765   @param  EAX  Lower 32-bits of MSR value.
766   @param  EDX  Upper 32-bits of MSR value.
767 
768   <b>Example usage</b>
769   @code
770   UINT64  Msr;
771 
772   Msr = AsmReadMsr64 (MSR_GOLDMONT_LASTBRANCH_TOS);
773   AsmWriteMsr64 (MSR_GOLDMONT_LASTBRANCH_TOS, Msr);
774   @endcode
775   @note MSR_GOLDMONT_LASTBRANCH_TOS is defined as MSR_LASTBRANCH_TOS in SDM.
776 **/
777 #define MSR_GOLDMONT_LASTBRANCH_TOS              0x000001C9
778 
779 
780 /**
781   Core. Power Control Register. See http://biosbits.org.
782 
783   @param  ECX  MSR_GOLDMONT_POWER_CTL (0x000001FC)
784   @param  EAX  Lower 32-bits of MSR value.
785                Described by the type MSR_GOLDMONT_POWER_CTL_REGISTER.
786   @param  EDX  Upper 32-bits of MSR value.
787                Described by the type MSR_GOLDMONT_POWER_CTL_REGISTER.
788 
789   <b>Example usage</b>
790   @code
791   MSR_GOLDMONT_POWER_CTL_REGISTER  Msr;
792 
793   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_POWER_CTL);
794   AsmWriteMsr64 (MSR_GOLDMONT_POWER_CTL, Msr.Uint64);
795   @endcode
796   @note MSR_GOLDMONT_POWER_CTL is defined as MSR_POWER_CTL in SDM.
797 **/
798 #define MSR_GOLDMONT_POWER_CTL                   0x000001FC
799 
800 /**
801   MSR information returned for MSR index #MSR_GOLDMONT_POWER_CTL
802 **/
803 typedef union {
804   ///
805   /// Individual bit fields
806   ///
807   struct {
808     UINT32  Reserved1:1;
809     ///
810     /// [Bit 1] Package. C1E Enable (R/W)  When set to '1', will enable the
811     /// CPU to switch to the Minimum Enhanced Intel SpeedStep Technology
812     /// operating point when all execution cores enter MWAIT (C1).
813     ///
814     UINT32  C1EEnable:1;
815     UINT32  Reserved2:30;
816     UINT32  Reserved3:32;
817   } Bits;
818   ///
819   /// All bit fields as a 32-bit value
820   ///
821   UINT32  Uint32;
822   ///
823   /// All bit fields as a 64-bit value
824   ///
825   UINT64  Uint64;
826 } MSR_GOLDMONT_POWER_CTL_REGISTER;
827 
828 
829 /**
830   Package. Lower 64 Bit OwnerEpoch Component of SGX Key (RO). Low 64 bits of
831   an 128-bit external entropy value for key derivation of an enclave.
832 
833   @param  ECX  MSR_GOLDMONT_SGXOWNER0 (0x00000300)
834   @param  EAX  Lower 32-bits of MSR value.
835   @param  EDX  Upper 32-bits of MSR value.
836 
837   <b>Example usage</b>
838   @code
839   UINT64  Msr;
840 
841   Msr = AsmReadMsr64 (MSR_GOLDMONT_SGXOWNER0);
842   @endcode
843   @note MSR_GOLDMONT_SGXOWNER0 is defined as MSR_SGXOWNER0 in SDM.
844 **/
845 #define MSR_GOLDMONT_SGXOWNER0                   0x00000300
846 
847 
848 /**
849   Package. Upper 64 Bit OwnerEpoch Component of SGX Key (RO). Upper 64 bits of
850   an 128-bit external entropy value for key derivation of an enclave.
851 
852   @param  ECX  MSR_GOLDMONT_SGXOWNER1 (0x00000301)
853   @param  EAX  Lower 32-bits of MSR value.
854   @param  EDX  Upper 32-bits of MSR value.
855 
856   <b>Example usage</b>
857   @code
858   UINT64  Msr;
859 
860   Msr = AsmReadMsr64 (MSR_GOLDMONT_SGXOWNER1);
861   @endcode
862   @note MSR_GOLDMONT_SGXOWNER1 is defined as MSR_SGXOWNER1 in SDM.
863 **/
864 #define MSR_GOLDMONT_SGXOWNER1                   0x00000301
865 
866 
867 /**
868   Core. See Table 35-2. See Section 18.2.4, "Architectural Performance
869   Monitoring Version 4.".
870 
871   @param  ECX  MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET (0x00000390)
872   @param  EAX  Lower 32-bits of MSR value.
873                Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER.
874   @param  EDX  Upper 32-bits of MSR value.
875                Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER.
876 
877   <b>Example usage</b>
878   @code
879   MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER  Msr;
880 
881   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET);
882   AsmWriteMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET, Msr.Uint64);
883   @endcode
884   @note MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET is defined as IA32_PERF_GLOBAL_STATUS_RESET in SDM.
885 **/
886 #define MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET 0x00000390
887 
888 /**
889   MSR information returned for MSR index
890   #MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET
891 **/
892 typedef union {
893   ///
894   /// Individual bit fields
895   ///
896   struct {
897     ///
898     /// [Bit 0] Set 1 to clear Ovf_PMC0.
899     ///
900     UINT32  Ovf_PMC0:1;
901     ///
902     /// [Bit 1] Set 1 to clear Ovf_PMC1.
903     ///
904     UINT32  Ovf_PMC1:1;
905     ///
906     /// [Bit 2] Set 1 to clear Ovf_PMC2.
907     ///
908     UINT32  Ovf_PMC2:1;
909     ///
910     /// [Bit 3] Set 1 to clear Ovf_PMC3.
911     ///
912     UINT32  Ovf_PMC3:1;
913     UINT32  Reserved1:28;
914     ///
915     /// [Bit 32] Set 1 to clear Ovf_FixedCtr0.
916     ///
917     UINT32  Ovf_FixedCtr0:1;
918     ///
919     /// [Bit 33] Set 1 to clear Ovf_FixedCtr1.
920     ///
921     UINT32  Ovf_FixedCtr1:1;
922     ///
923     /// [Bit 34] Set 1 to clear Ovf_FixedCtr2.
924     ///
925     UINT32  Ovf_FixedCtr2:1;
926     UINT32  Reserved2:20;
927     ///
928     /// [Bit 55] Set 1 to clear Trace_ToPA_PMI.
929     ///
930     UINT32  Trace_ToPA_PMI:1;
931     UINT32  Reserved3:2;
932     ///
933     /// [Bit 58] Set 1 to clear LBR_Frz.
934     ///
935     UINT32  LBR_Frz:1;
936     ///
937     /// [Bit 59] Set 1 to clear CTR_Frz.
938     ///
939     UINT32  CTR_Frz:1;
940     ///
941     /// [Bit 60] Set 1 to clear ASCI.
942     ///
943     UINT32  ASCI:1;
944     ///
945     /// [Bit 61] Set 1 to clear Ovf_Uncore.
946     ///
947     UINT32  Ovf_Uncore:1;
948     ///
949     /// [Bit 62] Set 1 to clear Ovf_BufDSSAVE.
950     ///
951     UINT32  Ovf_BufDSSAVE:1;
952     ///
953     /// [Bit 63] Set 1 to clear CondChgd.
954     ///
955     UINT32  CondChgd:1;
956   } Bits;
957   ///
958   /// All bit fields as a 64-bit value
959   ///
960   UINT64  Uint64;
961 } MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_RESET_REGISTER;
962 
963 
964 /**
965   Core. See Table 35-2. See Section 18.2.4, "Architectural Performance
966   Monitoring Version 4.".
967 
968   @param  ECX  MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET (0x00000391)
969   @param  EAX  Lower 32-bits of MSR value.
970                Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER.
971   @param  EDX  Upper 32-bits of MSR value.
972                Described by the type MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER.
973 
974   <b>Example usage</b>
975   @code
976   MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER  Msr;
977 
978   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET);
979   AsmWriteMsr64 (MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET, Msr.Uint64);
980   @endcode
981   @note MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET is defined as IA32_PERF_GLOBAL_STATUS_SET in SDM.
982 **/
983 #define MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET 0x00000391
984 
985 /**
986   MSR information returned for MSR index
987   #MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET
988 **/
989 typedef union {
990   ///
991   /// Individual bit fields
992   ///
993   struct {
994     ///
995     /// [Bit 0] Set 1 to cause Ovf_PMC0 = 1.
996     ///
997     UINT32  Ovf_PMC0:1;
998     ///
999     /// [Bit 1] Set 1 to cause Ovf_PMC1 = 1.
1000     ///
1001     UINT32  Ovf_PMC1:1;
1002     ///
1003     /// [Bit 2] Set 1 to cause Ovf_PMC2 = 1.
1004     ///
1005     UINT32  Ovf_PMC2:1;
1006     ///
1007     /// [Bit 3] Set 1 to cause Ovf_PMC3 = 1.
1008     ///
1009     UINT32  Ovf_PMC3:1;
1010     UINT32  Reserved1:28;
1011     ///
1012     /// [Bit 32] Set 1 to cause Ovf_FixedCtr0 = 1.
1013     ///
1014     UINT32  Ovf_FixedCtr0:1;
1015     ///
1016     /// [Bit 33] Set 1 to cause Ovf_FixedCtr1 = 1.
1017     ///
1018     UINT32  Ovf_FixedCtr1:1;
1019     ///
1020     /// [Bit 34] Set 1 to cause Ovf_FixedCtr2 = 1.
1021     ///
1022     UINT32  Ovf_FixedCtr2:1;
1023     UINT32  Reserved2:20;
1024     ///
1025     /// [Bit 55] Set 1 to cause Trace_ToPA_PMI = 1.
1026     ///
1027     UINT32  Trace_ToPA_PMI:1;
1028     UINT32  Reserved3:2;
1029     ///
1030     /// [Bit 58] Set 1 to cause LBR_Frz = 1.
1031     ///
1032     UINT32  LBR_Frz:1;
1033     ///
1034     /// [Bit 59] Set 1 to cause CTR_Frz = 1.
1035     ///
1036     UINT32  CTR_Frz:1;
1037     ///
1038     /// [Bit 60] Set 1 to cause ASCI = 1.
1039     ///
1040     UINT32  ASCI:1;
1041     ///
1042     /// [Bit 61] Set 1 to cause Ovf_Uncore.
1043     ///
1044     UINT32  Ovf_Uncore:1;
1045     ///
1046     /// [Bit 62] Set 1 to cause Ovf_BufDSSAVE.
1047     ///
1048     UINT32  Ovf_BufDSSAVE:1;
1049     UINT32  Reserved4:1;
1050   } Bits;
1051   ///
1052   /// All bit fields as a 64-bit value
1053   ///
1054   UINT64  Uint64;
1055 } MSR_GOLDMONT_IA32_PERF_GLOBAL_STATUS_SET_REGISTER;
1056 
1057 
1058 /**
1059   Core. See Table 35-2. See Section 18.4.4, "Processor Event Based Sampling
1060   (PEBS).".
1061 
1062   @param  ECX  MSR_GOLDMONT_PEBS_ENABLE (0x000003F1)
1063   @param  EAX  Lower 32-bits of MSR value.
1064                Described by the type MSR_GOLDMONT_PEBS_ENABLE_REGISTER.
1065   @param  EDX  Upper 32-bits of MSR value.
1066                Described by the type MSR_GOLDMONT_PEBS_ENABLE_REGISTER.
1067 
1068   <b>Example usage</b>
1069   @code
1070   MSR_GOLDMONT_PEBS_ENABLE_REGISTER  Msr;
1071 
1072   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PEBS_ENABLE);
1073   AsmWriteMsr64 (MSR_GOLDMONT_PEBS_ENABLE, Msr.Uint64);
1074   @endcode
1075   @note MSR_GOLDMONT_PEBS_ENABLE is defined as MSR_PEBS_ENABLE in SDM.
1076 **/
1077 #define MSR_GOLDMONT_PEBS_ENABLE                 0x000003F1
1078 
1079 /**
1080   MSR information returned for MSR index #MSR_GOLDMONT_PEBS_ENABLE
1081 **/
1082 typedef union {
1083   ///
1084   /// Individual bit fields
1085   ///
1086   struct {
1087     ///
1088     /// [Bit 0] Enable PEBS trigger and recording for the programmed event
1089     /// (precise or otherwise) on IA32_PMC0. (R/W).
1090     ///
1091     UINT32  Enable:1;
1092     UINT32  Reserved1:31;
1093     UINT32  Reserved2:32;
1094   } Bits;
1095   ///
1096   /// All bit fields as a 32-bit value
1097   ///
1098   UINT32  Uint32;
1099   ///
1100   /// All bit fields as a 64-bit value
1101   ///
1102   UINT64  Uint64;
1103 } MSR_GOLDMONT_PEBS_ENABLE_REGISTER;
1104 
1105 
1106 /**
1107   Package. Note: C-state values are processor specific C-state code names,
1108   unrelated to MWAIT extension C-state parameters or ACPI CStates. Package C3
1109   Residency Counter. (R/O) Value since last reset that this package is in
1110   processor-specific C3 states. Count at the same frequency as the TSC.
1111 
1112   @param  ECX  MSR_GOLDMONT_PKG_C3_RESIDENCY (0x000003F8)
1113   @param  EAX  Lower 32-bits of MSR value.
1114   @param  EDX  Upper 32-bits of MSR value.
1115 
1116   <b>Example usage</b>
1117   @code
1118   UINT64  Msr;
1119 
1120   Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C3_RESIDENCY);
1121   AsmWriteMsr64 (MSR_GOLDMONT_PKG_C3_RESIDENCY, Msr);
1122   @endcode
1123   @note MSR_GOLDMONT_PKG_C3_RESIDENCY is defined as MSR_PKG_C3_RESIDENCY in SDM.
1124 **/
1125 #define MSR_GOLDMONT_PKG_C3_RESIDENCY            0x000003F8
1126 
1127 
1128 /**
1129   Package. Note: C-state values are processor specific C-state code names,
1130   unrelated to MWAIT extension C-state parameters or ACPI CStates. Package C6
1131   Residency Counter. (R/O) Value since last reset that this package is in
1132   processor-specific C6 states. Count at the same frequency as the TSC.
1133 
1134   @param  ECX  MSR_GOLDMONT_PKG_C6_RESIDENCY (0x000003F9)
1135   @param  EAX  Lower 32-bits of MSR value.
1136   @param  EDX  Upper 32-bits of MSR value.
1137 
1138   <b>Example usage</b>
1139   @code
1140   UINT64  Msr;
1141 
1142   Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C6_RESIDENCY);
1143   AsmWriteMsr64 (MSR_GOLDMONT_PKG_C6_RESIDENCY, Msr);
1144   @endcode
1145   @note MSR_GOLDMONT_PKG_C6_RESIDENCY is defined as MSR_PKG_C6_RESIDENCY in SDM.
1146 **/
1147 #define MSR_GOLDMONT_PKG_C6_RESIDENCY            0x000003F9
1148 
1149 
1150 /**
1151   Core. Note: C-state values are processor specific C-state code names,
1152   unrelated to MWAIT extension C-state parameters or ACPI CStates. CORE C3
1153   Residency Counter. (R/O) Value since last reset that this core is in
1154   processor-specific C3 states. Count at the same frequency as the TSC.
1155 
1156   @param  ECX  MSR_GOLDMONT_CORE_C3_RESIDENCY (0x000003FC)
1157   @param  EAX  Lower 32-bits of MSR value.
1158   @param  EDX  Upper 32-bits of MSR value.
1159 
1160   <b>Example usage</b>
1161   @code
1162   UINT64  Msr;
1163 
1164   Msr = AsmReadMsr64 (MSR_GOLDMONT_CORE_C3_RESIDENCY);
1165   AsmWriteMsr64 (MSR_GOLDMONT_CORE_C3_RESIDENCY, Msr);
1166   @endcode
1167   @note MSR_GOLDMONT_CORE_C3_RESIDENCY is defined as MSR_CORE_C3_RESIDENCY in SDM.
1168 **/
1169 #define MSR_GOLDMONT_CORE_C3_RESIDENCY           0x000003FC
1170 
1171 
1172 /**
1173   Package. Enhanced SMM Feature Control (SMM-RW) Reports SMM capability
1174   Enhancement. Accessible only while in SMM.
1175 
1176   @param  ECX  MSR_GOLDMONT_SMM_FEATURE_CONTROL (0x000004E0)
1177   @param  EAX  Lower 32-bits of MSR value.
1178                Described by the type MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER.
1179   @param  EDX  Upper 32-bits of MSR value.
1180                Described by the type MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER.
1181 
1182   <b>Example usage</b>
1183   @code
1184   MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER  Msr;
1185 
1186   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_FEATURE_CONTROL);
1187   AsmWriteMsr64 (MSR_GOLDMONT_SMM_FEATURE_CONTROL, Msr.Uint64);
1188   @endcode
1189   @note MSR_GOLDMONT_SMM_FEATURE_CONTROL is defined as MSR_SMM_FEATURE_CONTROL in SDM.
1190 **/
1191 #define MSR_GOLDMONT_SMM_FEATURE_CONTROL         0x000004E0
1192 
1193 /**
1194   MSR information returned for MSR index #MSR_GOLDMONT_SMM_FEATURE_CONTROL
1195 **/
1196 typedef union {
1197   ///
1198   /// Individual bit fields
1199   ///
1200   struct {
1201     ///
1202     /// [Bit 0] Lock (SMM-RWO) When set to '1' locks this register from
1203     /// further changes.
1204     ///
1205     UINT32  Lock:1;
1206     UINT32  Reserved1:1;
1207     ///
1208     /// [Bit 2] SMM_Code_Chk_En (SMM-RW) This control bit is available only if
1209     /// MSR_SMM_MCA_CAP[58] == 1. When set to '0' (default) none of the
1210     /// logical processors are prevented from executing SMM code outside the
1211     /// ranges defined by the SMRR. When set to '1' any logical processor in
1212     /// the package that attempts to execute SMM code not within the ranges
1213     /// defined by the SMRR will assert an unrecoverable MCE.
1214     ///
1215     UINT32  SMM_Code_Chk_En:1;
1216     UINT32  Reserved2:29;
1217     UINT32  Reserved3:32;
1218   } Bits;
1219   ///
1220   /// All bit fields as a 32-bit value
1221   ///
1222   UINT32  Uint32;
1223   ///
1224   /// All bit fields as a 64-bit value
1225   ///
1226   UINT64  Uint64;
1227 } MSR_GOLDMONT_SMM_FEATURE_CONTROL_REGISTER;
1228 
1229 
1230 /**
1231   Package. SMM Delayed (SMM-RO) Reports the interruptible state of all logical
1232   processors in the package. Available only while in SMM and
1233   MSR_SMM_MCA_CAP[LONG_FLOW_INDICATION] == 1.
1234 
1235   @param  ECX  MSR_GOLDMONT_SMM_DELAYED (0x000004E2)
1236   @param  EAX  Lower 32-bits of MSR value.
1237                Described by the type MSR_GOLDMONT_SMM_DELAYED_REGISTER.
1238   @param  EDX  Upper 32-bits of MSR value.
1239                Described by the type MSR_GOLDMONT_SMM_DELAYED_REGISTER.
1240 
1241   <b>Example usage</b>
1242   @code
1243   MSR_GOLDMONT_SMM_DELAYED_REGISTER  Msr;
1244 
1245   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_DELAYED);
1246   AsmWriteMsr64 (MSR_GOLDMONT_SMM_DELAYED, Msr.Uint64);
1247   @endcode
1248   @note MSR_GOLDMONT_SMM_DELAYED is defined as MSR_SMM_DELAYED in SDM.
1249 **/
1250 #define MSR_GOLDMONT_SMM_DELAYED                 0x000004E2
1251 
1252 
1253 /**
1254   Package. SMM Blocked (SMM-RO) Reports the blocked state of all logical
1255   processors in the package. Available only while in SMM.
1256 
1257   @param  ECX  MSR_GOLDMONT_SMM_BLOCKED (0x000004E3)
1258   @param  EAX  Lower 32-bits of MSR value.
1259                Described by the type MSR_GOLDMONT_SMM_BLOCKED_REGISTER.
1260   @param  EDX  Upper 32-bits of MSR value.
1261                Described by the type MSR_GOLDMONT_SMM_BLOCKED_REGISTER.
1262 
1263   <b>Example usage</b>
1264   @code
1265   MSR_GOLDMONT_SMM_BLOCKED_REGISTER  Msr;
1266 
1267   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_SMM_BLOCKED);
1268   AsmWriteMsr64 (MSR_GOLDMONT_SMM_BLOCKED, Msr.Uint64);
1269   @endcode
1270   @note MSR_GOLDMONT_SMM_BLOCKED is defined as MSR_SMM_BLOCKED in SDM.
1271 **/
1272 #define MSR_GOLDMONT_SMM_BLOCKED                 0x000004E3
1273 
1274 
1275 /**
1276   Core. Trace Control Register (R/W).
1277 
1278   @param  ECX  MSR_GOLDMONT_IA32_RTIT_CTL (0x00000570)
1279   @param  EAX  Lower 32-bits of MSR value.
1280                Described by the type MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER.
1281   @param  EDX  Upper 32-bits of MSR value.
1282                Described by the type MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER.
1283 
1284   <b>Example usage</b>
1285   @code
1286   MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER  Msr;
1287 
1288   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_RTIT_CTL);
1289   AsmWriteMsr64 (MSR_GOLDMONT_IA32_RTIT_CTL, Msr.Uint64);
1290   @endcode
1291   @note MSR_GOLDMONT_IA32_RTIT_CTL is defined as IA32_RTIT_CTL in SDM.
1292 **/
1293 #define MSR_IA32_RTIT_CTL                        0x00000570
1294 
1295 /**
1296   MSR information returned for MSR index #MSR_IA32_RTIT_CTL
1297 **/
1298 typedef union {
1299   ///
1300   /// Individual bit fields
1301   ///
1302   struct {
1303     ///
1304     /// [Bit 0] TraceEn.
1305     ///
1306     UINT32  TraceEn:1;
1307     ///
1308     /// [Bit 1] CYCEn.
1309     ///
1310     UINT32  CYCEn:1;
1311     ///
1312     /// [Bit 2] OS.
1313     ///
1314     UINT32  OS:1;
1315     ///
1316     /// [Bit 3] User.
1317     ///
1318     UINT32  User:1;
1319     UINT32  Reserved1:3;
1320     ///
1321     /// [Bit 7] CR3 filter.
1322     ///
1323     UINT32  CR3:1;
1324     ///
1325     /// [Bit 8] ToPA. Writing 0 will #GP if also setting TraceEn.
1326     ///
1327     UINT32  ToPA:1;
1328     ///
1329     /// [Bit 9] MTCEn.
1330     ///
1331     UINT32  MTCEn:1;
1332     ///
1333     /// [Bit 10] TSCEn.
1334     ///
1335     UINT32  TSCEn:1;
1336     ///
1337     /// [Bit 11] DisRETC.
1338     ///
1339     UINT32  DisRETC:1;
1340     UINT32  Reserved2:1;
1341     ///
1342     /// [Bit 13] BranchEn.
1343     ///
1344     UINT32  BranchEn:1;
1345     ///
1346     /// [Bits 17:14] MTCFreq.
1347     ///
1348     UINT32  MTCFreq:4;
1349     UINT32  Reserved3:1;
1350     ///
1351     /// [Bits 22:19] CYCThresh.
1352     ///
1353     UINT32  CYCThresh:4;
1354     UINT32  Reserved4:1;
1355     ///
1356     /// [Bits 27:24] PSBFreq.
1357     ///
1358     UINT32  PSBFreq:4;
1359     UINT32  Reserved5:4;
1360     ///
1361     /// [Bits 35:32] ADDR0_CFG.
1362     ///
1363     UINT32  ADDR0_CFG:4;
1364     ///
1365     /// [Bits 39:36] ADDR1_CFG.
1366     ///
1367     UINT32  ADDR1_CFG:4;
1368     UINT32  Reserved6:24;
1369   } Bits;
1370   ///
1371   /// All bit fields as a 64-bit value
1372   ///
1373   UINT64  Uint64;
1374 } MSR_GOLDMONT_IA32_RTIT_CTL_REGISTER;
1375 
1376 
1377 /**
1378   Package. Unit Multipliers used in RAPL Interfaces (R/O) See Section 14.9.1,
1379   "RAPL Interfaces.".
1380 
1381   @param  ECX  MSR_GOLDMONT_RAPL_POWER_UNIT (0x00000606)
1382   @param  EAX  Lower 32-bits of MSR value.
1383                Described by the type MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER.
1384   @param  EDX  Upper 32-bits of MSR value.
1385                Described by the type MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER.
1386 
1387   <b>Example usage</b>
1388   @code
1389   MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER  Msr;
1390 
1391   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_RAPL_POWER_UNIT);
1392   @endcode
1393   @note MSR_GOLDMONT_RAPL_POWER_UNIT is defined as MSR_RAPL_POWER_UNIT in SDM.
1394 **/
1395 #define MSR_GOLDMONT_RAPL_POWER_UNIT             0x00000606
1396 
1397 /**
1398   MSR information returned for MSR index #MSR_GOLDMONT_RAPL_POWER_UNIT
1399 **/
1400 typedef union {
1401   ///
1402   /// Individual bit fields
1403   ///
1404   struct {
1405     ///
1406     /// [Bits 3:0] Power Units. Power related information (in Watts) is in
1407     /// unit of, 1W/2^PU; where PU is an unsigned integer represented by bits
1408     /// 3:0. Default value is 1000b, indicating power unit is in 3.9
1409     /// milliWatts increment.
1410     ///
1411     UINT32  PowerUnits:4;
1412     UINT32  Reserved1:4;
1413     ///
1414     /// [Bits 12:8] Energy Status Units. Energy related information (in
1415     /// Joules) is in unit of, 1Joule/ (2^ESU); where ESU is an unsigned
1416     /// integer represented by bits 12:8. Default value is 01110b, indicating
1417     /// energy unit is in 61 microJoules.
1418     ///
1419     UINT32  EnergyStatusUnits:5;
1420     UINT32  Reserved2:3;
1421     ///
1422     /// [Bits 19:16] Time Unit. Time related information (in seconds) is in
1423     /// unit of, 1S/2^TU; where TU is an unsigned integer represented by bits
1424     /// 19:16. Default value is 1010b, indicating power unit is in 0.977
1425     /// millisecond.
1426     ///
1427     UINT32  TimeUnit:4;
1428     UINT32  Reserved3:12;
1429     UINT32  Reserved4:32;
1430   } Bits;
1431   ///
1432   /// All bit fields as a 32-bit value
1433   ///
1434   UINT32  Uint32;
1435   ///
1436   /// All bit fields as a 64-bit value
1437   ///
1438   UINT64  Uint64;
1439 } MSR_GOLDMONT_RAPL_POWER_UNIT_REGISTER;
1440 
1441 
1442 /**
1443   Package. Package C3 Interrupt Response Limit (R/W)  Note: C-state values are
1444   processor specific C-state code names, unrelated to MWAIT extension C-state
1445   parameters or ACPI CStates.
1446 
1447   @param  ECX  MSR_GOLDMONT_PKGC3_IRTL (0x0000060A)
1448   @param  EAX  Lower 32-bits of MSR value.
1449                Described by the type MSR_GOLDMONT_PKGC3_IRTL_REGISTER.
1450   @param  EDX  Upper 32-bits of MSR value.
1451                Described by the type MSR_GOLDMONT_PKGC3_IRTL_REGISTER.
1452 
1453   <b>Example usage</b>
1454   @code
1455   MSR_GOLDMONT_PKGC3_IRTL_REGISTER  Msr;
1456 
1457   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKGC3_IRTL);
1458   AsmWriteMsr64 (MSR_GOLDMONT_PKGC3_IRTL, Msr.Uint64);
1459   @endcode
1460   @note MSR_GOLDMONT_PKGC3_IRTL is defined as MSR_PKGC3_IRTL in SDM.
1461 **/
1462 #define MSR_GOLDMONT_PKGC3_IRTL                  0x0000060A
1463 
1464 /**
1465   MSR information returned for MSR index #MSR_GOLDMONT_PKGC3_IRTL
1466 **/
1467 typedef union {
1468   ///
1469   /// Individual bit fields
1470   ///
1471   struct {
1472     ///
1473     /// [Bits 9:0] Interrupt response time limit (R/W)  Specifies the limit
1474     /// that should be used to decide if the package should be put into a
1475     /// package C3 state.
1476     ///
1477     UINT32  InterruptResponseTimeLimit:10;
1478     ///
1479     /// [Bits 12:10] Time Unit (R/W)  Specifies the encoding value of time
1480     /// unit of the interrupt response time limit. See Table 35-18 for
1481     /// supported time unit encodings.
1482     ///
1483     UINT32  TimeUnit:3;
1484     UINT32  Reserved1:2;
1485     ///
1486     /// [Bit 15] Valid (R/W)  Indicates whether the values in bits 12:0 are
1487     /// valid and can be used by the processor for package C-sate management.
1488     ///
1489     UINT32  Valid:1;
1490     UINT32  Reserved2:16;
1491     UINT32  Reserved3:32;
1492   } Bits;
1493   ///
1494   /// All bit fields as a 32-bit value
1495   ///
1496   UINT32  Uint32;
1497   ///
1498   /// All bit fields as a 64-bit value
1499   ///
1500   UINT64  Uint64;
1501 } MSR_GOLDMONT_PKGC3_IRTL_REGISTER;
1502 
1503 
1504 /**
1505   Package. Package C6/C7S Interrupt Response Limit 1 (R/W)  This MSR defines
1506   the interrupt response time limit used by the processor to manage transition
1507   to package C6 or C7S state. Note: C-state values are processor specific
1508   C-state code names, unrelated to MWAIT extension C-state parameters or ACPI
1509   CStates.
1510 
1511   @param  ECX  MSR_GOLDMONT_PKGC_IRTL1 (0x0000060B)
1512   @param  EAX  Lower 32-bits of MSR value.
1513                Described by the type MSR_GOLDMONT_PKGC_IRTL1_REGISTER.
1514   @param  EDX  Upper 32-bits of MSR value.
1515                Described by the type MSR_GOLDMONT_PKGC_IRTL1_REGISTER.
1516 
1517   <b>Example usage</b>
1518   @code
1519   MSR_GOLDMONT_PKGC_IRTL1_REGISTER  Msr;
1520 
1521   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKGC_IRTL1);
1522   AsmWriteMsr64 (MSR_GOLDMONT_PKGC_IRTL1, Msr.Uint64);
1523   @endcode
1524   @note MSR_GOLDMONT_PKGC_IRTL1 is defined as MSR_PKGC_IRTL1 in SDM.
1525 **/
1526 #define MSR_GOLDMONT_PKGC_IRTL1                  0x0000060B
1527 
1528 /**
1529   MSR information returned for MSR index #MSR_GOLDMONT_PKGC_IRTL1
1530 **/
1531 typedef union {
1532   ///
1533   /// Individual bit fields
1534   ///
1535   struct {
1536     ///
1537     /// [Bits 9:0] Interrupt response time limit (R/W)  Specifies the limit
1538     /// that should be used to decide if the package should be put into a
1539     /// package C6 or C7S state.
1540     ///
1541     UINT32  InterruptResponseTimeLimit:10;
1542     ///
1543     /// [Bits 12:10] Time Unit (R/W)  Specifies the encoding value of time
1544     /// unit of the interrupt response time limit. See Table 35-18 for
1545     /// supported time unit encodings.
1546     ///
1547     UINT32  TimeUnit:3;
1548     UINT32  Reserved1:2;
1549     ///
1550     /// [Bit 15] Valid (R/W)  Indicates whether the values in bits 12:0 are
1551     /// valid and can be used by the processor for package C-sate management.
1552     ///
1553     UINT32  Valid:1;
1554     UINT32  Reserved2:16;
1555     UINT32  Reserved3:32;
1556   } Bits;
1557   ///
1558   /// All bit fields as a 32-bit value
1559   ///
1560   UINT32  Uint32;
1561   ///
1562   /// All bit fields as a 64-bit value
1563   ///
1564   UINT64  Uint64;
1565 } MSR_GOLDMONT_PKGC_IRTL1_REGISTER;
1566 
1567 
1568 /**
1569   Package. Package C7 Interrupt Response Limit 2 (R/W)  This MSR defines the
1570   interrupt response time limit used by the processor to manage transition to
1571   package C7 state. Note: C-state values are processor specific C-state code
1572   names, unrelated to MWAIT extension C-state parameters or ACPI CStates.
1573 
1574   @param  ECX  MSR_GOLDMONT_PKGC_IRTL2 (0x0000060C)
1575   @param  EAX  Lower 32-bits of MSR value.
1576                Described by the type MSR_GOLDMONT_PKGC_IRTL2_REGISTER.
1577   @param  EDX  Upper 32-bits of MSR value.
1578                Described by the type MSR_GOLDMONT_PKGC_IRTL2_REGISTER.
1579 
1580   <b>Example usage</b>
1581   @code
1582   MSR_GOLDMONT_PKGC_IRTL2_REGISTER  Msr;
1583 
1584   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKGC_IRTL2);
1585   AsmWriteMsr64 (MSR_GOLDMONT_PKGC_IRTL2, Msr.Uint64);
1586   @endcode
1587   @note MSR_GOLDMONT_PKGC_IRTL2 is defined as MSR_PKGC_IRTL2 in SDM.
1588 **/
1589 #define MSR_GOLDMONT_PKGC_IRTL2                  0x0000060C
1590 
1591 /**
1592   MSR information returned for MSR index #MSR_GOLDMONT_PKGC_IRTL2
1593 **/
1594 typedef union {
1595   ///
1596   /// Individual bit fields
1597   ///
1598   struct {
1599     ///
1600     /// [Bits 9:0] Interrupt response time limit (R/W)  Specifies the limit
1601     /// that should be used to decide if the package should be put into a
1602     /// package C7 state.
1603     ///
1604     UINT32  InterruptResponseTimeLimit:10;
1605     ///
1606     /// [Bits 12:10] Time Unit (R/W)  Specifies the encoding value of time
1607     /// unit of the interrupt response time limit. See Table 35-18 for
1608     /// supported time unit encodings.
1609     ///
1610     UINT32  TimeUnit:3;
1611     UINT32  Reserved1:2;
1612     ///
1613     /// [Bit 15] Valid (R/W)  Indicates whether the values in bits 12:0 are
1614     /// valid and can be used by the processor for package C-sate management.
1615     ///
1616     UINT32  Valid:1;
1617     UINT32  Reserved2:16;
1618     UINT32  Reserved3:32;
1619   } Bits;
1620   ///
1621   /// All bit fields as a 32-bit value
1622   ///
1623   UINT32  Uint32;
1624   ///
1625   /// All bit fields as a 64-bit value
1626   ///
1627   UINT64  Uint64;
1628 } MSR_GOLDMONT_PKGC_IRTL2_REGISTER;
1629 
1630 
1631 /**
1632   Package. Note: C-state values are processor specific C-state code names,
1633   unrelated to MWAIT extension C-state parameters or ACPI CStates. Package C2
1634   Residency Counter. (R/O) Value since last reset that this package is in
1635   processor-specific C2 states. Count at the same frequency as the TSC.
1636 
1637   @param  ECX  MSR_GOLDMONT_PKG_C2_RESIDENCY (0x0000060D)
1638   @param  EAX  Lower 32-bits of MSR value.
1639   @param  EDX  Upper 32-bits of MSR value.
1640 
1641   <b>Example usage</b>
1642   @code
1643   UINT64  Msr;
1644 
1645   Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C2_RESIDENCY);
1646   AsmWriteMsr64 (MSR_GOLDMONT_PKG_C2_RESIDENCY, Msr);
1647   @endcode
1648   @note MSR_GOLDMONT_PKG_C2_RESIDENCY is defined as MSR_PKG_C2_RESIDENCY in SDM.
1649 **/
1650 #define MSR_GOLDMONT_PKG_C2_RESIDENCY            0x0000060D
1651 
1652 
1653 /**
1654   Package. PKG RAPL Power Limit Control (R/W) See Section 14.9.3, "Package
1655   RAPL Domain.".
1656 
1657   @param  ECX  MSR_GOLDMONT_PKG_POWER_LIMIT (0x00000610)
1658   @param  EAX  Lower 32-bits of MSR value.
1659   @param  EDX  Upper 32-bits of MSR value.
1660 
1661   <b>Example usage</b>
1662   @code
1663   UINT64  Msr;
1664 
1665   Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_POWER_LIMIT);
1666   AsmWriteMsr64 (MSR_GOLDMONT_PKG_POWER_LIMIT, Msr);
1667   @endcode
1668   @note MSR_GOLDMONT_PKG_POWER_LIMIT is defined as MSR_PKG_POWER_LIMIT in SDM.
1669 **/
1670 #define MSR_GOLDMONT_PKG_POWER_LIMIT             0x00000610
1671 
1672 
1673 /**
1674   Package. PKG Energy Status (R/O) See Section 14.9.3, "Package RAPL Domain.".
1675 
1676   @param  ECX  MSR_GOLDMONT_PKG_ENERGY_STATUS (0x00000611)
1677   @param  EAX  Lower 32-bits of MSR value.
1678   @param  EDX  Upper 32-bits of MSR value.
1679 
1680   <b>Example usage</b>
1681   @code
1682   UINT64  Msr;
1683 
1684   Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_ENERGY_STATUS);
1685   @endcode
1686   @note MSR_GOLDMONT_PKG_ENERGY_STATUS is defined as MSR_PKG_ENERGY_STATUS in SDM.
1687 **/
1688 #define MSR_GOLDMONT_PKG_ENERGY_STATUS           0x00000611
1689 
1690 
1691 /**
1692   Package. PKG Perf Status (R/O) See Section 14.9.3, "Package RAPL Domain.".
1693 
1694   @param  ECX  MSR_GOLDMONT_PKG_PERF_STATUS (0x00000613)
1695   @param  EAX  Lower 32-bits of MSR value.
1696   @param  EDX  Upper 32-bits of MSR value.
1697 
1698   <b>Example usage</b>
1699   @code
1700   UINT64  Msr;
1701 
1702   Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_PERF_STATUS);
1703   @endcode
1704   @note MSR_GOLDMONT_PKG_PERF_STATUS is defined as MSR_PKG_PERF_STATUS in SDM.
1705 **/
1706 #define MSR_GOLDMONT_PKG_PERF_STATUS             0x00000613
1707 
1708 
1709 /**
1710   Package. PKG RAPL Parameters (R/W).
1711 
1712   @param  ECX  MSR_GOLDMONT_PKG_POWER_INFO (0x00000614)
1713   @param  EAX  Lower 32-bits of MSR value.
1714                Described by the type MSR_GOLDMONT_PKG_POWER_INFO_REGISTER.
1715   @param  EDX  Upper 32-bits of MSR value.
1716                Described by the type MSR_GOLDMONT_PKG_POWER_INFO_REGISTER.
1717 
1718   <b>Example usage</b>
1719   @code
1720   MSR_GOLDMONT_PKG_POWER_INFO_REGISTER  Msr;
1721 
1722   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_PKG_POWER_INFO);
1723   AsmWriteMsr64 (MSR_GOLDMONT_PKG_POWER_INFO, Msr.Uint64);
1724   @endcode
1725   @note MSR_GOLDMONT_PKG_POWER_INFO is defined as MSR_PKG_POWER_INFO in SDM.
1726 **/
1727 #define MSR_GOLDMONT_PKG_POWER_INFO              0x00000614
1728 
1729 /**
1730   MSR information returned for MSR index #MSR_GOLDMONT_PKG_POWER_INFO
1731 **/
1732 typedef union {
1733   ///
1734   /// Individual bit fields
1735   ///
1736   struct {
1737     ///
1738     /// [Bits 14:0] Thermal Spec Power (R/W)  See Section 14.9.3, "Package
1739     /// RAPL Domain.".
1740     ///
1741     UINT32  ThermalSpecPower:15;
1742     UINT32  Reserved1:1;
1743     ///
1744     /// [Bits 30:16] Minimum Power (R/W)  See Section 14.9.3, "Package RAPL
1745     /// Domain.".
1746     ///
1747     UINT32  MinimumPower:15;
1748     UINT32  Reserved2:1;
1749     ///
1750     /// [Bits 46:32] Maximum Power (R/W)  See Section 14.9.3, "Package RAPL
1751     /// Domain.".
1752     ///
1753     UINT32  MaximumPower:15;
1754     UINT32  Reserved3:1;
1755     ///
1756     /// [Bits 54:48] Maximum Time Window (R/W)  Specified by 2^Y * (1.0 +
1757     /// Z/4.0) * Time_Unit, where "Y" is the unsigned integer value
1758     /// represented. by bits 52:48, "Z" is an unsigned integer represented by
1759     /// bits 54:53. "Time_Unit" is specified by the "Time Units" field of
1760     /// MSR_RAPL_POWER_UNIT.
1761     ///
1762     UINT32  MaximumTimeWindow:7;
1763     UINT32  Reserved4:9;
1764   } Bits;
1765   ///
1766   /// All bit fields as a 64-bit value
1767   ///
1768   UINT64  Uint64;
1769 } MSR_GOLDMONT_PKG_POWER_INFO_REGISTER;
1770 
1771 
1772 /**
1773   Package. DRAM RAPL Power Limit Control (R/W)  See Section 14.9.5, "DRAM RAPL
1774   Domain.".
1775 
1776   @param  ECX  MSR_GOLDMONT_DRAM_POWER_LIMIT (0x00000618)
1777   @param  EAX  Lower 32-bits of MSR value.
1778   @param  EDX  Upper 32-bits of MSR value.
1779 
1780   <b>Example usage</b>
1781   @code
1782   UINT64  Msr;
1783 
1784   Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_POWER_LIMIT);
1785   AsmWriteMsr64 (MSR_GOLDMONT_DRAM_POWER_LIMIT, Msr);
1786   @endcode
1787   @note MSR_GOLDMONT_DRAM_POWER_LIMIT is defined as MSR_DRAM_POWER_LIMIT in SDM.
1788 **/
1789 #define MSR_GOLDMONT_DRAM_POWER_LIMIT            0x00000618
1790 
1791 
1792 /**
1793   Package. DRAM Energy Status (R/O)  See Section 14.9.5, "DRAM RAPL Domain.".
1794 
1795   @param  ECX  MSR_GOLDMONT_DRAM_ENERGY_STATUS (0x00000619)
1796   @param  EAX  Lower 32-bits of MSR value.
1797   @param  EDX  Upper 32-bits of MSR value.
1798 
1799   <b>Example usage</b>
1800   @code
1801   UINT64  Msr;
1802 
1803   Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_ENERGY_STATUS);
1804   @endcode
1805   @note MSR_GOLDMONT_DRAM_ENERGY_STATUS is defined as MSR_DRAM_ENERGY_STATUS in SDM.
1806 **/
1807 #define MSR_GOLDMONT_DRAM_ENERGY_STATUS          0x00000619
1808 
1809 
1810 /**
1811   Package. DRAM Performance Throttling Status (R/O) See Section 14.9.5, "DRAM
1812   RAPL Domain.".
1813 
1814   @param  ECX  MSR_GOLDMONT_DRAM_PERF_STATUS (0x0000061B)
1815   @param  EAX  Lower 32-bits of MSR value.
1816   @param  EDX  Upper 32-bits of MSR value.
1817 
1818   <b>Example usage</b>
1819   @code
1820   UINT64  Msr;
1821 
1822   Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_PERF_STATUS);
1823   @endcode
1824   @note MSR_GOLDMONT_DRAM_PERF_STATUS is defined as MSR_DRAM_PERF_STATUS in SDM.
1825 **/
1826 #define MSR_GOLDMONT_DRAM_PERF_STATUS            0x0000061B
1827 
1828 
1829 /**
1830   Package. DRAM RAPL Parameters (R/W) See Section 14.9.5, "DRAM RAPL Domain.".
1831 
1832   @param  ECX  MSR_GOLDMONT_DRAM_POWER_INFO (0x0000061C)
1833   @param  EAX  Lower 32-bits of MSR value.
1834   @param  EDX  Upper 32-bits of MSR value.
1835 
1836   <b>Example usage</b>
1837   @code
1838   UINT64  Msr;
1839 
1840   Msr = AsmReadMsr64 (MSR_GOLDMONT_DRAM_POWER_INFO);
1841   AsmWriteMsr64 (MSR_GOLDMONT_DRAM_POWER_INFO, Msr);
1842   @endcode
1843   @note MSR_GOLDMONT_DRAM_POWER_INFO is defined as MSR_DRAM_POWER_INFO in SDM.
1844 **/
1845 #define MSR_GOLDMONT_DRAM_POWER_INFO             0x0000061C
1846 
1847 
1848 /**
1849   Package. Note: C-state values are processor specific C-state code names,.
1850   Package C10 Residency Counter. (R/O) Value since last reset that the entire
1851   SOC is in an S0i3 state. Count at the same frequency as the TSC.
1852 
1853   @param  ECX  MSR_GOLDMONT_PKG_C10_RESIDENCY (0x00000632)
1854   @param  EAX  Lower 32-bits of MSR value.
1855   @param  EDX  Upper 32-bits of MSR value.
1856 
1857   <b>Example usage</b>
1858   @code
1859   UINT64  Msr;
1860 
1861   Msr = AsmReadMsr64 (MSR_GOLDMONT_PKG_C10_RESIDENCY);
1862   AsmWriteMsr64 (MSR_GOLDMONT_PKG_C10_RESIDENCY, Msr);
1863   @endcode
1864   @note MSR_GOLDMONT_PKG_C10_RESIDENCY is defined as MSR_PKG_C10_RESIDENCY in SDM.
1865 **/
1866 #define MSR_GOLDMONT_PKG_C10_RESIDENCY           0x00000632
1867 
1868 
1869 /**
1870   Package. PP0 Energy Status (R/O)  See Section 14.9.4, "PP0/PP1 RAPL
1871   Domains.".
1872 
1873   @param  ECX  MSR_GOLDMONT_PP0_ENERGY_STATUS (0x00000639)
1874   @param  EAX  Lower 32-bits of MSR value.
1875   @param  EDX  Upper 32-bits of MSR value.
1876 
1877   <b>Example usage</b>
1878   @code
1879   UINT64  Msr;
1880 
1881   Msr = AsmReadMsr64 (MSR_GOLDMONT_PP0_ENERGY_STATUS);
1882   @endcode
1883   @note MSR_GOLDMONT_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.
1884 **/
1885 #define MSR_GOLDMONT_PP0_ENERGY_STATUS           0x00000639
1886 
1887 
1888 /**
1889   Package. PP1 Energy Status (R/O)  See Section 14.9.4, "PP0/PP1 RAPL
1890   Domains.".
1891 
1892   @param  ECX  MSR_GOLDMONT_PP1_ENERGY_STATUS (0x00000641)
1893   @param  EAX  Lower 32-bits of MSR value.
1894   @param  EDX  Upper 32-bits of MSR value.
1895 
1896   <b>Example usage</b>
1897   @code
1898   UINT64  Msr;
1899 
1900   Msr = AsmReadMsr64 (MSR_GOLDMONT_PP1_ENERGY_STATUS);
1901   @endcode
1902   @note MSR_GOLDMONT_PP1_ENERGY_STATUS is defined as MSR_PP1_ENERGY_STATUS in SDM.
1903 **/
1904 #define MSR_GOLDMONT_PP1_ENERGY_STATUS           0x00000641
1905 
1906 
1907 /**
1908   Package. ConfigTDP Control (R/W).
1909 
1910   @param  ECX  MSR_GOLDMONT_TURBO_ACTIVATION_RATIO (0x0000064C)
1911   @param  EAX  Lower 32-bits of MSR value.
1912                Described by the type MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER.
1913   @param  EDX  Upper 32-bits of MSR value.
1914                Described by the type MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER.
1915 
1916   <b>Example usage</b>
1917   @code
1918   MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER  Msr;
1919 
1920   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_TURBO_ACTIVATION_RATIO);
1921   AsmWriteMsr64 (MSR_GOLDMONT_TURBO_ACTIVATION_RATIO, Msr.Uint64);
1922   @endcode
1923   @note MSR_GOLDMONT_TURBO_ACTIVATION_RATIO is defined as MSR_TURBO_ACTIVATION_RATIO in SDM.
1924 **/
1925 #define MSR_GOLDMONT_TURBO_ACTIVATION_RATIO      0x0000064C
1926 
1927 /**
1928   MSR information returned for MSR index #MSR_GOLDMONT_TURBO_ACTIVATION_RATIO
1929 **/
1930 typedef union {
1931   ///
1932   /// Individual bit fields
1933   ///
1934   struct {
1935     ///
1936     /// [Bits 7:0] MAX_NON_TURBO_RATIO (RW/L) System BIOS can program this
1937     /// field.
1938     ///
1939     UINT32  MAX_NON_TURBO_RATIO:8;
1940     UINT32  Reserved1:23;
1941     ///
1942     /// [Bit 31] TURBO_ACTIVATION_RATIO_Lock (RW/L) When this bit is set, the
1943     /// content of this register is locked until a reset.
1944     ///
1945     UINT32  TURBO_ACTIVATION_RATIO_Lock:1;
1946     UINT32  Reserved2:32;
1947   } Bits;
1948   ///
1949   /// All bit fields as a 32-bit value
1950   ///
1951   UINT32  Uint32;
1952   ///
1953   /// All bit fields as a 64-bit value
1954   ///
1955   UINT64  Uint64;
1956 } MSR_GOLDMONT_TURBO_ACTIVATION_RATIO_REGISTER;
1957 
1958 
1959 /**
1960   Package. Indicator of Frequency Clipping in Processor Cores (R/W) (frequency
1961   refers to processor core frequency).
1962 
1963   @param  ECX  MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS (0x0000064F)
1964   @param  EAX  Lower 32-bits of MSR value.
1965                Described by the type MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER.
1966   @param  EDX  Upper 32-bits of MSR value.
1967                Described by the type MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER.
1968 
1969   <b>Example usage</b>
1970   @code
1971   MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER  Msr;
1972 
1973   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS);
1974   AsmWriteMsr64 (MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS, Msr.Uint64);
1975   @endcode
1976   @note MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS is defined as MSR_CORE_PERF_LIMIT_REASONS in SDM.
1977 **/
1978 #define MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS     0x0000064F
1979 
1980 /**
1981   MSR information returned for MSR index #MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS
1982 **/
1983 typedef union {
1984   ///
1985   /// Individual bit fields
1986   ///
1987   struct {
1988     ///
1989     /// [Bit 0] PROCHOT Status (R0) When set, processor core frequency is
1990     /// reduced below the operating system request due to assertion of
1991     /// external PROCHOT.
1992     ///
1993     UINT32  PROCHOTStatus:1;
1994     ///
1995     /// [Bit 1] Thermal Status (R0) When set, frequency is reduced below the
1996     /// operating system request due to a thermal event.
1997     ///
1998     UINT32  ThermalStatus:1;
1999     ///
2000     /// [Bit 2] Package-Level Power Limiting PL1 Status (R0) When set,
2001     /// frequency is reduced below the operating system request due to
2002     /// package-level power limiting PL1.
2003     ///
2004     UINT32  PL1Status:1;
2005     ///
2006     /// [Bit 3] Package-Level PL2 Power Limiting Status (R0) When set,
2007     /// frequency is reduced below the operating system request due to
2008     /// package-level power limiting PL2.
2009     ///
2010     UINT32  PL2Status:1;
2011     UINT32  Reserved1:5;
2012     ///
2013     /// [Bit 9] Core Power Limiting Status (R0) When set, frequency is reduced
2014     /// below the operating system request due to domain-level power limiting.
2015     ///
2016     UINT32  PowerLimitingStatus:1;
2017     ///
2018     /// [Bit 10] VR Therm Alert Status (R0) When set, frequency is reduced
2019     /// below the operating system request due to a thermal alert from the
2020     /// Voltage Regulator.
2021     ///
2022     UINT32  VRThermAlertStatus:1;
2023     ///
2024     /// [Bit 11] Max Turbo Limit Status (R0) When set, frequency is reduced
2025     /// below the operating system request due to multi-core turbo limits.
2026     ///
2027     UINT32  MaxTurboLimitStatus:1;
2028     ///
2029     /// [Bit 12] Electrical Design Point Status (R0) When set, frequency is
2030     /// reduced below the operating system request due to electrical design
2031     /// point constraints (e.g. maximum electrical current consumption).
2032     ///
2033     UINT32  ElectricalDesignPointStatus:1;
2034     ///
2035     /// [Bit 13] Turbo Transition Attenuation Status (R0) When set, frequency
2036     /// is reduced below the operating system request due to Turbo transition
2037     /// attenuation. This prevents performance degradation due to frequent
2038     /// operating ratio changes.
2039     ///
2040     UINT32  TurboTransitionAttenuationStatus:1;
2041     ///
2042     /// [Bit 14] Maximum Efficiency Frequency Status (R0) When set, frequency
2043     /// is reduced below the maximum efficiency frequency.
2044     ///
2045     UINT32  MaximumEfficiencyFrequencyStatus:1;
2046     UINT32  Reserved2:1;
2047     ///
2048     /// [Bit 16] PROCHOT Log  When set, indicates that the PROCHOT Status bit
2049     /// has asserted since the log bit was last cleared. This log bit will
2050     /// remain set until cleared by software writing 0.
2051     ///
2052     UINT32  PROCHOT:1;
2053     ///
2054     /// [Bit 17] Thermal Log  When set, indicates that the Thermal Status bit
2055     /// has asserted since the log bit was last cleared. This log bit will
2056     /// remain set until cleared by software writing 0.
2057     ///
2058     UINT32  ThermalLog:1;
2059     ///
2060     /// [Bit 18] Package-Level PL1 Power Limiting Log  When set, indicates
2061     /// that the Package Level PL1 Power Limiting Status bit has asserted
2062     /// since the log bit was last cleared. This log bit will remain set until
2063     /// cleared by software writing 0.
2064     ///
2065     UINT32  PL1Log:1;
2066     ///
2067     /// [Bit 19] Package-Level PL2 Power Limiting Log When set, indicates that
2068     /// the Package Level PL2 Power Limiting Status bit has asserted since the
2069     /// log bit was last cleared. This log bit will remain set until cleared
2070     /// by software writing 0.
2071     ///
2072     UINT32  PL2Log:1;
2073     UINT32  Reserved3:5;
2074     ///
2075     /// [Bit 25] Core Power Limiting Log  When set, indicates that the Core
2076     /// Power Limiting Status bit has asserted since the log bit was last
2077     /// cleared. This log bit will remain set until cleared by software
2078     /// writing 0.
2079     ///
2080     UINT32  CorePowerLimitingLog:1;
2081     ///
2082     /// [Bit 26] VR Therm Alert Log  When set, indicates that the VR Therm
2083     /// Alert Status bit has asserted since the log bit was last cleared. This
2084     /// log bit will remain set until cleared by software writing 0.
2085     ///
2086     UINT32  VRThermAlertLog:1;
2087     ///
2088     /// [Bit 27] Max Turbo Limit Log When set, indicates that the Max Turbo
2089     /// Limit Status bit has asserted since the log bit was last cleared. This
2090     /// log bit will remain set until cleared by software writing 0.
2091     ///
2092     UINT32  MaxTurboLimitLog:1;
2093     ///
2094     /// [Bit 28] Electrical Design Point Log  When set, indicates that the EDP
2095     /// Status bit has asserted since the log bit was last cleared. This log
2096     /// bit will remain set until cleared by software writing 0.
2097     ///
2098     UINT32  ElectricalDesignPointLog:1;
2099     ///
2100     /// [Bit 29] Turbo Transition Attenuation Log When set, indicates that the
2101     /// Turbo Transition Attenuation Status bit has asserted since the log bit
2102     /// was last cleared. This log bit will remain set until cleared by
2103     /// software writing 0.
2104     ///
2105     UINT32  TurboTransitionAttenuationLog:1;
2106     ///
2107     /// [Bit 30] Maximum Efficiency Frequency Log  When set, indicates that
2108     /// the Maximum Efficiency Frequency Status bit has asserted since the log
2109     /// bit was last cleared. This log bit will remain set until cleared by
2110     /// software writing 0.
2111     ///
2112     UINT32  MaximumEfficiencyFrequencyLog:1;
2113     UINT32  Reserved4:1;
2114     UINT32  Reserved5:32;
2115   } Bits;
2116   ///
2117   /// All bit fields as a 32-bit value
2118   ///
2119   UINT32  Uint32;
2120   ///
2121   /// All bit fields as a 64-bit value
2122   ///
2123   UINT64  Uint64;
2124 } MSR_GOLDMONT_CORE_PERF_LIMIT_REASONS_REGISTER;
2125 
2126 
2127 /**
2128   Core. Last Branch Record n From IP (R/W) One of 32 pairs of last branch
2129   record registers on the last branch record stack. The From_IP part of the
2130   stack contains pointers to the source instruction . See also: -  Last Branch
2131   Record Stack TOS at 1C9H -  Section 17.6 and record format in Section
2132   17.4.8.1.
2133 
2134   @param  ECX  MSR_GOLDMONT_LASTBRANCH_n_FROM_IP
2135   @param  EAX  Lower 32-bits of MSR value.
2136                Described by the type MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER.
2137   @param  EDX  Upper 32-bits of MSR value.
2138                Described by the type MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER.
2139 
2140   <b>Example usage</b>
2141   @code
2142   MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER  Msr;
2143 
2144   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_LASTBRANCH_n_FROM_IP);
2145   AsmWriteMsr64 (MSR_GOLDMONT_LASTBRANCH_n_FROM_IP, Msr.Uint64);
2146   @endcode
2147   @note MSR_GOLDMONT_LASTBRANCH_0_FROM_IP  is defined as MSR_LASTBRANCH_0_FROM_IP  in SDM.
2148         MSR_GOLDMONT_LASTBRANCH_1_FROM_IP  is defined as MSR_LASTBRANCH_1_FROM_IP  in SDM.
2149         MSR_GOLDMONT_LASTBRANCH_2_FROM_IP  is defined as MSR_LASTBRANCH_2_FROM_IP  in SDM.
2150         MSR_GOLDMONT_LASTBRANCH_3_FROM_IP  is defined as MSR_LASTBRANCH_3_FROM_IP  in SDM.
2151         MSR_GOLDMONT_LASTBRANCH_4_FROM_IP  is defined as MSR_LASTBRANCH_4_FROM_IP  in SDM.
2152         MSR_GOLDMONT_LASTBRANCH_5_FROM_IP  is defined as MSR_LASTBRANCH_5_FROM_IP  in SDM.
2153         MSR_GOLDMONT_LASTBRANCH_6_FROM_IP  is defined as MSR_LASTBRANCH_6_FROM_IP  in SDM.
2154         MSR_GOLDMONT_LASTBRANCH_7_FROM_IP  is defined as MSR_LASTBRANCH_7_FROM_IP  in SDM.
2155         MSR_GOLDMONT_LASTBRANCH_8_FROM_IP  is defined as MSR_LASTBRANCH_8_FROM_IP  in SDM.
2156         MSR_GOLDMONT_LASTBRANCH_9_FROM_IP  is defined as MSR_LASTBRANCH_9_FROM_IP  in SDM.
2157         MSR_GOLDMONT_LASTBRANCH_10_FROM_IP is defined as MSR_LASTBRANCH_10_FROM_IP in SDM.
2158         MSR_GOLDMONT_LASTBRANCH_11_FROM_IP is defined as MSR_LASTBRANCH_11_FROM_IP in SDM.
2159         MSR_GOLDMONT_LASTBRANCH_12_FROM_IP is defined as MSR_LASTBRANCH_12_FROM_IP in SDM.
2160         MSR_GOLDMONT_LASTBRANCH_13_FROM_IP is defined as MSR_LASTBRANCH_13_FROM_IP in SDM.
2161         MSR_GOLDMONT_LASTBRANCH_14_FROM_IP is defined as MSR_LASTBRANCH_14_FROM_IP in SDM.
2162         MSR_GOLDMONT_LASTBRANCH_15_FROM_IP is defined as MSR_LASTBRANCH_15_FROM_IP in SDM.
2163         MSR_GOLDMONT_LASTBRANCH_16_FROM_IP is defined as MSR_LASTBRANCH_16_FROM_IP in SDM.
2164         MSR_GOLDMONT_LASTBRANCH_17_FROM_IP is defined as MSR_LASTBRANCH_17_FROM_IP in SDM.
2165         MSR_GOLDMONT_LASTBRANCH_18_FROM_IP is defined as MSR_LASTBRANCH_18_FROM_IP in SDM.
2166         MSR_GOLDMONT_LASTBRANCH_19_FROM_IP is defined as MSR_LASTBRANCH_19_FROM_IP in SDM.
2167         MSR_GOLDMONT_LASTBRANCH_20_FROM_IP is defined as MSR_LASTBRANCH_20_FROM_IP in SDM.
2168         MSR_GOLDMONT_LASTBRANCH_21_FROM_IP is defined as MSR_LASTBRANCH_21_FROM_IP in SDM.
2169         MSR_GOLDMONT_LASTBRANCH_22_FROM_IP is defined as MSR_LASTBRANCH_22_FROM_IP in SDM.
2170         MSR_GOLDMONT_LASTBRANCH_23_FROM_IP is defined as MSR_LASTBRANCH_23_FROM_IP in SDM.
2171         MSR_GOLDMONT_LASTBRANCH_24_FROM_IP is defined as MSR_LASTBRANCH_24_FROM_IP in SDM.
2172         MSR_GOLDMONT_LASTBRANCH_25_FROM_IP is defined as MSR_LASTBRANCH_25_FROM_IP in SDM.
2173         MSR_GOLDMONT_LASTBRANCH_26_FROM_IP is defined as MSR_LASTBRANCH_26_FROM_IP in SDM.
2174         MSR_GOLDMONT_LASTBRANCH_27_FROM_IP is defined as MSR_LASTBRANCH_27_FROM_IP in SDM.
2175         MSR_GOLDMONT_LASTBRANCH_28_FROM_IP is defined as MSR_LASTBRANCH_28_FROM_IP in SDM.
2176         MSR_GOLDMONT_LASTBRANCH_29_FROM_IP is defined as MSR_LASTBRANCH_29_FROM_IP in SDM.
2177         MSR_GOLDMONT_LASTBRANCH_30_FROM_IP is defined as MSR_LASTBRANCH_30_FROM_IP in SDM.
2178         MSR_GOLDMONT_LASTBRANCH_31_FROM_IP is defined as MSR_LASTBRANCH_31_FROM_IP in SDM.
2179   @{
2180 **/
2181 #define MSR_GOLDMONT_LASTBRANCH_0_FROM_IP        0x00000680
2182 #define MSR_GOLDMONT_LASTBRANCH_1_FROM_IP        0x00000681
2183 #define MSR_GOLDMONT_LASTBRANCH_2_FROM_IP        0x00000682
2184 #define MSR_GOLDMONT_LASTBRANCH_3_FROM_IP        0x00000683
2185 #define MSR_GOLDMONT_LASTBRANCH_4_FROM_IP        0x00000684
2186 #define MSR_GOLDMONT_LASTBRANCH_5_FROM_IP        0x00000685
2187 #define MSR_GOLDMONT_LASTBRANCH_6_FROM_IP        0x00000686
2188 #define MSR_GOLDMONT_LASTBRANCH_7_FROM_IP        0x00000687
2189 #define MSR_GOLDMONT_LASTBRANCH_8_FROM_IP        0x00000688
2190 #define MSR_GOLDMONT_LASTBRANCH_9_FROM_IP        0x00000689
2191 #define MSR_GOLDMONT_LASTBRANCH_10_FROM_IP       0x0000068A
2192 #define MSR_GOLDMONT_LASTBRANCH_11_FROM_IP       0x0000068B
2193 #define MSR_GOLDMONT_LASTBRANCH_12_FROM_IP       0x0000068C
2194 #define MSR_GOLDMONT_LASTBRANCH_13_FROM_IP       0x0000068D
2195 #define MSR_GOLDMONT_LASTBRANCH_14_FROM_IP       0x0000068E
2196 #define MSR_GOLDMONT_LASTBRANCH_15_FROM_IP       0x0000068F
2197 #define MSR_GOLDMONT_LASTBRANCH_16_FROM_IP       0x00000690
2198 #define MSR_GOLDMONT_LASTBRANCH_17_FROM_IP       0x00000691
2199 #define MSR_GOLDMONT_LASTBRANCH_18_FROM_IP       0x00000692
2200 #define MSR_GOLDMONT_LASTBRANCH_19_FROM_IP       0x00000693
2201 #define MSR_GOLDMONT_LASTBRANCH_20_FROM_IP       0x00000694
2202 #define MSR_GOLDMONT_LASTBRANCH_21_FROM_IP       0x00000695
2203 #define MSR_GOLDMONT_LASTBRANCH_22_FROM_IP       0x00000696
2204 #define MSR_GOLDMONT_LASTBRANCH_23_FROM_IP       0x00000697
2205 #define MSR_GOLDMONT_LASTBRANCH_24_FROM_IP       0x00000698
2206 #define MSR_GOLDMONT_LASTBRANCH_25_FROM_IP       0x00000699
2207 #define MSR_GOLDMONT_LASTBRANCH_26_FROM_IP       0x0000069A
2208 #define MSR_GOLDMONT_LASTBRANCH_27_FROM_IP       0x0000069B
2209 #define MSR_GOLDMONT_LASTBRANCH_28_FROM_IP       0x0000069C
2210 #define MSR_GOLDMONT_LASTBRANCH_29_FROM_IP       0x0000069D
2211 #define MSR_GOLDMONT_LASTBRANCH_30_FROM_IP       0x0000069E
2212 #define MSR_GOLDMONT_LASTBRANCH_31_FROM_IP       0x0000069F
2213 /// @}
2214 
2215 /**
2216   MSR information returned for MSR indexes #MSR_GOLDMONT_LASTBRANCH_0_FROM_IP
2217   to #MSR_GOLDMONT_LASTBRANCH_31_FROM_IP.
2218 **/
2219 typedef union {
2220   ///
2221   /// Individual bit fields
2222   ///
2223   struct {
2224     ///
2225     /// [Bit 31:0] From Linear Address (R/W).
2226     ///
2227     UINT32  FromLinearAddress:32;
2228     ///
2229     /// [Bit 47:32] From Linear Address (R/W).
2230     ///
2231     UINT32  FromLinearAddressHi:16;
2232     ///
2233     /// [Bits 62:48] Signed extension of bits 47:0.
2234     ///
2235     UINT32  SignedExtension:15;
2236     ///
2237     /// [Bit 63] Mispred.
2238     ///
2239     UINT32  Mispred:1;
2240   } Bits;
2241   ///
2242   /// All bit fields as a 32-bit value
2243   ///
2244   UINT32  Uint32;
2245   ///
2246   /// All bit fields as a 64-bit value
2247   ///
2248   UINT64  Uint64;
2249 } MSR_GOLDMONT_LASTBRANCH_FROM_IP_REGISTER;
2250 
2251 
2252 /**
2253   Core. Last Branch Record n To IP (R/W) One of 32 pairs of last branch record
2254   registers on the last branch record stack. The To_IP part of the stack
2255   contains pointers to the Destination instruction and elapsed cycles from
2256   last LBR update. See also: - Section 17.6.
2257 
2258   @param  ECX  MSR_GOLDMONT_LASTBRANCH_n_TO_IP
2259   @param  EAX  Lower 32-bits of MSR value.
2260                Described by the type MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER.
2261   @param  EDX  Upper 32-bits of MSR value.
2262                Described by the type MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER.
2263 
2264   <b>Example usage</b>
2265   @code
2266   MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER  Msr;
2267 
2268   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_LASTBRANCH_0_TO_IP);
2269   AsmWriteMsr64 (MSR_GOLDMONT_LASTBRANCH_0_TO_IP, Msr.Uint64);
2270   @endcode
2271   @note MSR_GOLDMONT_LASTBRANCH_0_TO_IP  is defined as MSR_LASTBRANCH_0_TO_IP  in SDM.
2272         MSR_GOLDMONT_LASTBRANCH_1_TO_IP  is defined as MSR_LASTBRANCH_1_TO_IP  in SDM.
2273         MSR_GOLDMONT_LASTBRANCH_2_TO_IP  is defined as MSR_LASTBRANCH_2_TO_IP  in SDM.
2274         MSR_GOLDMONT_LASTBRANCH_3_TO_IP  is defined as MSR_LASTBRANCH_3_TO_IP  in SDM.
2275         MSR_GOLDMONT_LASTBRANCH_4_TO_IP  is defined as MSR_LASTBRANCH_4_TO_IP  in SDM.
2276         MSR_GOLDMONT_LASTBRANCH_5_TO_IP  is defined as MSR_LASTBRANCH_5_TO_IP  in SDM.
2277         MSR_GOLDMONT_LASTBRANCH_6_TO_IP  is defined as MSR_LASTBRANCH_6_TO_IP  in SDM.
2278         MSR_GOLDMONT_LASTBRANCH_7_TO_IP  is defined as MSR_LASTBRANCH_7_TO_IP  in SDM.
2279         MSR_GOLDMONT_LASTBRANCH_8_TO_IP  is defined as MSR_LASTBRANCH_8_TO_IP  in SDM.
2280         MSR_GOLDMONT_LASTBRANCH_9_TO_IP  is defined as MSR_LASTBRANCH_9_TO_IP  in SDM.
2281         MSR_GOLDMONT_LASTBRANCH_10_TO_IP is defined as MSR_LASTBRANCH_10_TO_IP in SDM.
2282         MSR_GOLDMONT_LASTBRANCH_11_TO_IP is defined as MSR_LASTBRANCH_11_TO_IP in SDM.
2283         MSR_GOLDMONT_LASTBRANCH_12_TO_IP is defined as MSR_LASTBRANCH_12_TO_IP in SDM.
2284         MSR_GOLDMONT_LASTBRANCH_13_TO_IP is defined as MSR_LASTBRANCH_13_TO_IP in SDM.
2285         MSR_GOLDMONT_LASTBRANCH_14_TO_IP is defined as MSR_LASTBRANCH_14_TO_IP in SDM.
2286         MSR_GOLDMONT_LASTBRANCH_15_TO_IP is defined as MSR_LASTBRANCH_15_TO_IP in SDM.
2287         MSR_GOLDMONT_LASTBRANCH_16_TO_IP is defined as MSR_LASTBRANCH_16_TO_IP in SDM.
2288         MSR_GOLDMONT_LASTBRANCH_17_TO_IP is defined as MSR_LASTBRANCH_17_TO_IP in SDM.
2289         MSR_GOLDMONT_LASTBRANCH_18_TO_IP is defined as MSR_LASTBRANCH_18_TO_IP in SDM.
2290         MSR_GOLDMONT_LASTBRANCH_19_TO_IP is defined as MSR_LASTBRANCH_19_TO_IP in SDM.
2291         MSR_GOLDMONT_LASTBRANCH_20_TO_IP is defined as MSR_LASTBRANCH_20_TO_IP in SDM.
2292         MSR_GOLDMONT_LASTBRANCH_21_TO_IP is defined as MSR_LASTBRANCH_21_TO_IP in SDM.
2293         MSR_GOLDMONT_LASTBRANCH_22_TO_IP is defined as MSR_LASTBRANCH_22_TO_IP in SDM.
2294         MSR_GOLDMONT_LASTBRANCH_23_TO_IP is defined as MSR_LASTBRANCH_23_TO_IP in SDM.
2295         MSR_GOLDMONT_LASTBRANCH_24_TO_IP is defined as MSR_LASTBRANCH_24_TO_IP in SDM.
2296         MSR_GOLDMONT_LASTBRANCH_25_TO_IP is defined as MSR_LASTBRANCH_25_TO_IP in SDM.
2297         MSR_GOLDMONT_LASTBRANCH_26_TO_IP is defined as MSR_LASTBRANCH_26_TO_IP in SDM.
2298         MSR_GOLDMONT_LASTBRANCH_27_TO_IP is defined as MSR_LASTBRANCH_27_TO_IP in SDM.
2299         MSR_GOLDMONT_LASTBRANCH_28_TO_IP is defined as MSR_LASTBRANCH_28_TO_IP in SDM.
2300         MSR_GOLDMONT_LASTBRANCH_29_TO_IP is defined as MSR_LASTBRANCH_29_TO_IP in SDM.
2301         MSR_GOLDMONT_LASTBRANCH_30_TO_IP is defined as MSR_LASTBRANCH_30_TO_IP in SDM.
2302         MSR_GOLDMONT_LASTBRANCH_31_TO_IP is defined as MSR_LASTBRANCH_31_TO_IP in SDM.
2303   @{
2304 **/
2305 #define MSR_GOLDMONT_LASTBRANCH_0_TO_IP          0x000006C0
2306 #define MSR_GOLDMONT_LASTBRANCH_1_TO_IP          0x000006C1
2307 #define MSR_GOLDMONT_LASTBRANCH_2_TO_IP          0x000006C2
2308 #define MSR_GOLDMONT_LASTBRANCH_3_TO_IP          0x000006C3
2309 #define MSR_GOLDMONT_LASTBRANCH_4_TO_IP          0x000006C4
2310 #define MSR_GOLDMONT_LASTBRANCH_5_TO_IP          0x000006C5
2311 #define MSR_GOLDMONT_LASTBRANCH_6_TO_IP          0x000006C6
2312 #define MSR_GOLDMONT_LASTBRANCH_7_TO_IP          0x000006C7
2313 #define MSR_GOLDMONT_LASTBRANCH_8_TO_IP          0x000006C8
2314 #define MSR_GOLDMONT_LASTBRANCH_9_TO_IP          0x000006C9
2315 #define MSR_GOLDMONT_LASTBRANCH_10_TO_IP         0x000006CA
2316 #define MSR_GOLDMONT_LASTBRANCH_11_TO_IP         0x000006CB
2317 #define MSR_GOLDMONT_LASTBRANCH_12_TO_IP         0x000006CC
2318 #define MSR_GOLDMONT_LASTBRANCH_13_TO_IP         0x000006CD
2319 #define MSR_GOLDMONT_LASTBRANCH_14_TO_IP         0x000006CE
2320 #define MSR_GOLDMONT_LASTBRANCH_15_TO_IP         0x000006CF
2321 #define MSR_GOLDMONT_LASTBRANCH_16_TO_IP         0x000006D0
2322 #define MSR_GOLDMONT_LASTBRANCH_17_TO_IP         0x000006D1
2323 #define MSR_GOLDMONT_LASTBRANCH_18_TO_IP         0x000006D2
2324 #define MSR_GOLDMONT_LASTBRANCH_19_TO_IP         0x000006D3
2325 #define MSR_GOLDMONT_LASTBRANCH_20_TO_IP         0x000006D4
2326 #define MSR_GOLDMONT_LASTBRANCH_21_TO_IP         0x000006D5
2327 #define MSR_GOLDMONT_LASTBRANCH_22_TO_IP         0x000006D6
2328 #define MSR_GOLDMONT_LASTBRANCH_23_TO_IP         0x000006D7
2329 #define MSR_GOLDMONT_LASTBRANCH_24_TO_IP         0x000006D8
2330 #define MSR_GOLDMONT_LASTBRANCH_25_TO_IP         0x000006D9
2331 #define MSR_GOLDMONT_LASTBRANCH_26_TO_IP         0x000006DA
2332 #define MSR_GOLDMONT_LASTBRANCH_27_TO_IP         0x000006DB
2333 #define MSR_GOLDMONT_LASTBRANCH_28_TO_IP         0x000006DC
2334 #define MSR_GOLDMONT_LASTBRANCH_29_TO_IP         0x000006DD
2335 #define MSR_GOLDMONT_LASTBRANCH_30_TO_IP         0x000006DE
2336 #define MSR_GOLDMONT_LASTBRANCH_31_TO_IP         0x000006DF
2337 /// @}
2338 
2339 /**
2340   MSR information returned for MSR indexes #MSR_GOLDMONT_LASTBRANCH_0_TO_IP to
2341   #MSR_GOLDMONT_LASTBRANCH_31_TO_IP.
2342 **/
2343 typedef union {
2344   ///
2345   /// Individual bit fields
2346   ///
2347   struct {
2348     ///
2349     /// [Bit 31:0] Target Linear Address (R/W).
2350     ///
2351     UINT32  TargetLinearAddress:32;
2352     ///
2353     /// [Bit 47:32] Target Linear Address (R/W).
2354     ///
2355     UINT32  TargetLinearAddressHi:16;
2356     ///
2357     /// [Bits 63:48] Elapsed cycles from last update to the LBR.
2358     ///
2359     UINT32  ElapsedCycles:16;
2360   } Bits;
2361   ///
2362   /// All bit fields as a 32-bit value
2363   ///
2364   UINT32  Uint32;
2365   ///
2366   /// All bit fields as a 64-bit value
2367   ///
2368   UINT64  Uint64;
2369 } MSR_GOLDMONT_LASTBRANCH_TO_IP_REGISTER;
2370 
2371 
2372 /**
2373   Core. Resource Association Register (R/W).
2374 
2375   @param  ECX  MSR_GOLDMONT_IA32_PQR_ASSOC (0x00000C8F)
2376   @param  EAX  Lower 32-bits of MSR value.
2377                Described by the type MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER.
2378   @param  EDX  Upper 32-bits of MSR value.
2379                Described by the type MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER.
2380 
2381   <b>Example usage</b>
2382   @code
2383   MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER  Msr;
2384 
2385   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_PQR_ASSOC);
2386   AsmWriteMsr64 (MSR_GOLDMONT_IA32_PQR_ASSOC, Msr.Uint64);
2387   @endcode
2388   @note MSR_GOLDMONT_IA32_PQR_ASSOC is defined as IA32_PQR_ASSOC in SDM.
2389 **/
2390 #define MSR_GOLDMONT_IA32_PQR_ASSOC              0x00000C8F
2391 
2392 /**
2393   MSR information returned for MSR index #MSR_GOLDMONT_IA32_PQR_ASSOC
2394 **/
2395 typedef union {
2396   ///
2397   /// Individual bit fields
2398   ///
2399   struct {
2400     UINT32  Reserved1:32;
2401     ///
2402     /// [Bits 33:32] COS (R/W).
2403     ///
2404     UINT32  COS:2;
2405     UINT32  Reserved2:30;
2406   } Bits;
2407   ///
2408   /// All bit fields as a 64-bit value
2409   ///
2410   UINT64  Uint64;
2411 } MSR_GOLDMONT_IA32_PQR_ASSOC_REGISTER;
2412 
2413 
2414 /**
2415   Module. L2 Class Of Service Mask - COS n (R/W) if CPUID.(EAX=10H,
2416   ECX=1):EDX.COS_MAX[15:0] >=n.
2417 
2418   @param  ECX  MSR_GOLDMONT_IA32_L2_QOS_MASK_n
2419   @param  EAX  Lower 32-bits of MSR value.
2420                Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER.
2421   @param  EDX  Upper 32-bits of MSR value.
2422                Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER.
2423 
2424   <b>Example usage</b>
2425   @code
2426   MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER  Msr;
2427 
2428   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_n);
2429   AsmWriteMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_n, Msr.Uint64);
2430   @endcode
2431   @note MSR_GOLDMONT_IA32_L2_QOS_MASK_0 is defined as IA32_L2_QOS_MASK_0 in SDM.
2432         MSR_GOLDMONT_IA32_L2_QOS_MASK_1 is defined as IA32_L2_QOS_MASK_1 in SDM.
2433         MSR_GOLDMONT_IA32_L2_QOS_MASK_2 is defined as IA32_L2_QOS_MASK_2 in SDM.
2434   @{
2435 **/
2436 #define MSR_GOLDMONT_IA32_L2_QOS_MASK_0          0x00000D10
2437 #define MSR_GOLDMONT_IA32_L2_QOS_MASK_1          0x00000D11
2438 #define MSR_GOLDMONT_IA32_L2_QOS_MASK_2          0x00000D12
2439 /// @}
2440 
2441 /**
2442   MSR information returned for MSR indexes #MSR_GOLDMONT_IA32_L2_QOS_MASK_0 to
2443   #MSR_GOLDMONT_IA32_L2_QOS_MASK_2.
2444 **/
2445 typedef union {
2446   ///
2447   /// Individual bit fields
2448   ///
2449   struct {
2450     ///
2451     /// [Bits 7:0] CBM: Bit vector of available L2 ways for COS 0 enforcement
2452     ///
2453     UINT32  CBM:8;
2454     UINT32  Reserved1:24;
2455     UINT32  Reserved2:32;
2456   } Bits;
2457   ///
2458   /// All bit fields as a 32-bit value
2459   ///
2460   UINT32  Uint32;
2461   ///
2462   /// All bit fields as a 64-bit value
2463   ///
2464   UINT64  Uint64;
2465 } MSR_GOLDMONT_IA32_L2_QOS_MASK_REGISTER;
2466 
2467 
2468 /**
2469   Package. L2 Class Of Service Mask - COS 3 (R/W) if CPUID.(EAX=10H,
2470   ECX=1):EDX.COS_MAX[15:0] >=3.
2471 
2472   @param  ECX  MSR_GOLDMONT_IA32_L2_QOS_MASK_3
2473   @param  EAX  Lower 32-bits of MSR value.
2474                Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER.
2475   @param  EDX  Upper 32-bits of MSR value.
2476                Described by the type MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER.
2477 
2478   <b>Example usage</b>
2479   @code
2480   MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER  Msr;
2481 
2482   Msr.Uint64 = AsmReadMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_3);
2483   AsmWriteMsr64 (MSR_GOLDMONT_IA32_L2_QOS_MASK_3, Msr.Uint64);
2484   @endcode
2485   @note MSR_GOLDMONT_IA32_L2_QOS_MASK_3 is defined as IA32_L2_QOS_MASK_3 in SDM.
2486 **/
2487 #define MSR_GOLDMONT_IA32_L2_QOS_MASK_3          0x00000D13
2488 
2489 /**
2490   MSR information returned for MSR index #MSR_GOLDMONT_IA32_L2_QOS_MASK_3.
2491 **/
2492 typedef union {
2493   ///
2494   /// Individual bit fields
2495   ///
2496   struct {
2497     ///
2498     /// [Bits 19:0] CBM: Bit vector of available L2 ways for COS 0 enforcement
2499     ///
2500     UINT32  CBM:20;
2501     UINT32  Reserved1:12;
2502     UINT32  Reserved2:32;
2503   } Bits;
2504   ///
2505   /// All bit fields as a 32-bit value
2506   ///
2507   UINT32  Uint32;
2508   ///
2509   /// All bit fields as a 64-bit value
2510   ///
2511   UINT64  Uint64;
2512 } MSR_GOLDMONT_IA32_L2_QOS_MASK_3_REGISTER;
2513 
2514 
2515 #endif
2516