]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Register/Intel/Msr/SilvermontMsr.h
MdePkg: Apply uncrustify changes
[mirror_edk2.git] / MdePkg / Include / Register / Intel / Msr / SilvermontMsr.h
CommitLineData
053a6ae9
MK
1/** @file\r
2 MSR Definitions for Intel processors based on the Silvermont microarchitecture.\r
3\r
4 Provides defines for Machine Specific Registers(MSR) indexes. Data structures\r
5 are provided for MSRs that contain one or more bit fields. If the MSR value\r
6 returned is a single 32-bit or 64-bit value, then a data structure is not\r
7 provided for that MSR.\r
8\r
e057908f 9 Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>\r
0acd8697 10 SPDX-License-Identifier: BSD-2-Clause-Patent\r
053a6ae9
MK
11\r
12 @par Specification Reference:\r
ba1a2d11
ED
13 Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 4,\r
14 May 2018, Volume 4: Model-Specific-Registers (MSR)\r
053a6ae9
MK
15\r
16**/\r
17\r
18#ifndef __SILVERMONT_MSR_H__\r
19#define __SILVERMONT_MSR_H__\r
20\r
e057908f 21#include <Register/Intel/ArchitecturalMsr.h>\r
053a6ae9 22\r
f4c982bf
JF
23/**\r
24 Is Intel processors based on the Silvermont microarchitecture?\r
25\r
26 @param DisplayFamily Display Family ID\r
27 @param DisplayModel Display Model ID\r
28\r
29 @retval TRUE Yes, it is.\r
30 @retval FALSE No, it isn't.\r
31**/\r
32#define IS_SILVERMONT_PROCESSOR(DisplayFamily, DisplayModel) \\r
33 (DisplayFamily == 0x06 && \\r
34 ( \\r
35 DisplayModel == 0x37 || \\r
36 DisplayModel == 0x4A || \\r
37 DisplayModel == 0x4D || \\r
38 DisplayModel == 0x5A || \\r
39 DisplayModel == 0x5D \\r
40 ) \\r
41 )\r
42\r
053a6ae9 43/**\r
0f16be6d 44 Module. Model Specific Platform ID (R).\r
053a6ae9
MK
45\r
46 @param ECX MSR_SILVERMONT_PLATFORM_ID (0x00000017)\r
47 @param EAX Lower 32-bits of MSR value.\r
48 Described by the type MSR_SILVERMONT_PLATFORM_ID_REGISTER.\r
49 @param EDX Upper 32-bits of MSR value.\r
50 Described by the type MSR_SILVERMONT_PLATFORM_ID_REGISTER.\r
51\r
52 <b>Example usage</b>\r
53 @code\r
54 MSR_SILVERMONT_PLATFORM_ID_REGISTER Msr;\r
55\r
56 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PLATFORM_ID);\r
57 @endcode\r
94fe1b5f 58 @note MSR_SILVERMONT_PLATFORM_ID is defined as MSR_PLATFORM_ID in SDM.\r
053a6ae9 59**/\r
2f88bd3a 60#define MSR_SILVERMONT_PLATFORM_ID 0x00000017\r
053a6ae9
MK
61\r
62/**\r
63 MSR information returned for MSR index #MSR_SILVERMONT_PLATFORM_ID\r
64**/\r
65typedef union {\r
66 ///\r
67 /// Individual bit fields\r
68 ///\r
69 struct {\r
2f88bd3a 70 UINT32 Reserved1 : 8;\r
053a6ae9
MK
71 ///\r
72 /// [Bits 12:8] Maximum Qualified Ratio (R) The maximum allowed bus ratio.\r
73 ///\r
2f88bd3a
MK
74 UINT32 MaximumQualifiedRatio : 5;\r
75 UINT32 Reserved2 : 19;\r
76 UINT32 Reserved3 : 18;\r
053a6ae9 77 ///\r
ba1a2d11 78 /// [Bits 52:50] See Table 2-2.\r
053a6ae9 79 ///\r
2f88bd3a
MK
80 UINT32 PlatformId : 3;\r
81 UINT32 Reserved4 : 11;\r
053a6ae9
MK
82 } Bits;\r
83 ///\r
84 /// All bit fields as a 64-bit value\r
85 ///\r
2f88bd3a 86 UINT64 Uint64;\r
053a6ae9
MK
87} MSR_SILVERMONT_PLATFORM_ID_REGISTER;\r
88\r
053a6ae9 89/**\r
0f16be6d 90 Module. Processor Hard Power-On Configuration (R/W) Writes ignored.\r
053a6ae9
MK
91\r
92 @param ECX MSR_SILVERMONT_EBL_CR_POWERON (0x0000002A)\r
93 @param EAX Lower 32-bits of MSR value.\r
94 Described by the type MSR_SILVERMONT_EBL_CR_POWERON_REGISTER.\r
95 @param EDX Upper 32-bits of MSR value.\r
96 Described by the type MSR_SILVERMONT_EBL_CR_POWERON_REGISTER.\r
97\r
98 <b>Example usage</b>\r
99 @code\r
100 MSR_SILVERMONT_EBL_CR_POWERON_REGISTER Msr;\r
101\r
102 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_EBL_CR_POWERON);\r
103 AsmWriteMsr64 (MSR_SILVERMONT_EBL_CR_POWERON, Msr.Uint64);\r
104 @endcode\r
94fe1b5f 105 @note MSR_SILVERMONT_EBL_CR_POWERON is defined as MSR_EBL_CR_POWERON in SDM.\r
053a6ae9 106**/\r
2f88bd3a 107#define MSR_SILVERMONT_EBL_CR_POWERON 0x0000002A\r
053a6ae9
MK
108\r
109/**\r
110 MSR information returned for MSR index #MSR_SILVERMONT_EBL_CR_POWERON\r
111**/\r
112typedef union {\r
113 ///\r
114 /// Individual bit fields\r
115 ///\r
116 struct {\r
2f88bd3a
MK
117 UINT32 Reserved1 : 32;\r
118 UINT32 Reserved2 : 32;\r
053a6ae9
MK
119 } Bits;\r
120 ///\r
121 /// All bit fields as a 32-bit value\r
122 ///\r
2f88bd3a 123 UINT32 Uint32;\r
053a6ae9
MK
124 ///\r
125 /// All bit fields as a 64-bit value\r
126 ///\r
2f88bd3a 127 UINT64 Uint64;\r
053a6ae9
MK
128} MSR_SILVERMONT_EBL_CR_POWERON_REGISTER;\r
129\r
053a6ae9
MK
130/**\r
131 Core. SMI Counter (R/O).\r
132\r
133 @param ECX MSR_SILVERMONT_SMI_COUNT (0x00000034)\r
134 @param EAX Lower 32-bits of MSR value.\r
135 Described by the type MSR_SILVERMONT_SMI_COUNT_REGISTER.\r
136 @param EDX Upper 32-bits of MSR value.\r
137 Described by the type MSR_SILVERMONT_SMI_COUNT_REGISTER.\r
138\r
139 <b>Example usage</b>\r
140 @code\r
141 MSR_SILVERMONT_SMI_COUNT_REGISTER Msr;\r
142\r
143 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_SMI_COUNT);\r
144 @endcode\r
94fe1b5f 145 @note MSR_SILVERMONT_SMI_COUNT is defined as MSR_SMI_COUNT in SDM.\r
053a6ae9 146**/\r
2f88bd3a 147#define MSR_SILVERMONT_SMI_COUNT 0x00000034\r
053a6ae9
MK
148\r
149/**\r
150 MSR information returned for MSR index #MSR_SILVERMONT_SMI_COUNT\r
151**/\r
152typedef union {\r
153 ///\r
154 /// Individual bit fields\r
155 ///\r
156 struct {\r
157 ///\r
158 /// [Bits 31:0] SMI Count (R/O) Running count of SMI events since last\r
159 /// RESET.\r
160 ///\r
2f88bd3a
MK
161 UINT32 SMICount : 32;\r
162 UINT32 Reserved : 32;\r
053a6ae9
MK
163 } Bits;\r
164 ///\r
165 /// All bit fields as a 32-bit value\r
166 ///\r
2f88bd3a 167 UINT32 Uint32;\r
053a6ae9
MK
168 ///\r
169 /// All bit fields as a 64-bit value\r
170 ///\r
2f88bd3a 171 UINT64 Uint64;\r
053a6ae9
MK
172} MSR_SILVERMONT_SMI_COUNT_REGISTER;\r
173\r
0f16be6d 174/**\r
ba1a2d11 175 Core. Control Features in Intel 64 Processor (R/W). See Table 2-2.\r
0f16be6d
HW
176\r
177 @param ECX MSR_IA32_SILVERMONT_FEATURE_CONTROL (0x0000003A)\r
178 @param EAX Lower 32-bits of MSR value.\r
179 Described by the type\r
180 MSR_SILVERMONT_IA32_FEATURE_CONTROL_REGISTER.\r
181 @param EDX Upper 32-bits of MSR value.\r
182 Described by the type\r
183 MSR_SILVERMONT_IA32_FEATURE_CONTROL_REGISTER.\r
184\r
185 <b>Example usage</b>\r
186 @code\r
187 MSR_SILVERMONT_IA32_FEATURE_CONTROL_REGISTER Msr;\r
188\r
189 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_IA32_FEATURE_CONTROL);\r
190 AsmWriteMsr64 (MSR_SILVERMONT_IA32_FEATURE_CONTROL, Msr.Uint64);\r
191 @endcode\r
192 @note MSR_SILVERMONT_IA32_FEATURE_CONTROL is defined as IA32_FEATURE_CONTROL in SDM.\r
193**/\r
2f88bd3a 194#define MSR_SILVERMONT_IA32_FEATURE_CONTROL 0x0000003A\r
0f16be6d
HW
195\r
196/**\r
197 MSR information returned for MSR index #MSR_SILVERMONT_IA32_FEATURE_CONTROL\r
198**/\r
199typedef union {\r
200 ///\r
201 /// Individual bit fields\r
202 ///\r
203 struct {\r
204 ///\r
205 /// [Bit 0] Lock (R/WL).\r
206 ///\r
2f88bd3a
MK
207 UINT32 Lock : 1;\r
208 UINT32 Reserved1 : 1;\r
0f16be6d
HW
209 ///\r
210 /// [Bit 2] Enable VMX outside SMX operation (R/WL).\r
211 ///\r
2f88bd3a
MK
212 UINT32 EnableVmxOutsideSmx : 1;\r
213 UINT32 Reserved2 : 29;\r
214 UINT32 Reserved3 : 32;\r
0f16be6d
HW
215 } Bits;\r
216 ///\r
217 /// All bit fields as a 32-bit value\r
218 ///\r
2f88bd3a 219 UINT32 Uint32;\r
0f16be6d
HW
220 ///\r
221 /// All bit fields as a 64-bit value\r
222 ///\r
2f88bd3a 223 UINT64 Uint64;\r
0f16be6d
HW
224} MSR_SILVERMONT_IA32_FEATURE_CONTROL_REGISTER;\r
225\r
053a6ae9
MK
226/**\r
227 Core. Last Branch Record n From IP (R/W) One of eight pairs of last branch\r
0f16be6d
HW
228 record registers on the last branch record stack. The From_IP part of the\r
229 stack contains pointers to the source instruction. See also: - Last Branch\r
230 Record Stack TOS at 1C9H - Section 17.5 and record format in Section\r
231 17.4.8.1.\r
053a6ae9
MK
232\r
233 @param ECX MSR_SILVERMONT_LASTBRANCH_n_FROM_IP\r
234 @param EAX Lower 32-bits of MSR value.\r
235 @param EDX Upper 32-bits of MSR value.\r
236\r
237 <b>Example usage</b>\r
238 @code\r
239 UINT64 Msr;\r
240\r
241 Msr = AsmReadMsr64 (MSR_SILVERMONT_LASTBRANCH_0_FROM_IP);\r
242 AsmWriteMsr64 (MSR_SILVERMONT_LASTBRANCH_0_FROM_IP, Msr);\r
243 @endcode\r
94fe1b5f
JF
244 @note MSR_SILVERMONT_LASTBRANCH_0_FROM_IP is defined as MSR_LASTBRANCH_0_FROM_IP in SDM.\r
245 MSR_SILVERMONT_LASTBRANCH_1_FROM_IP is defined as MSR_LASTBRANCH_1_FROM_IP in SDM.\r
246 MSR_SILVERMONT_LASTBRANCH_2_FROM_IP is defined as MSR_LASTBRANCH_2_FROM_IP in SDM.\r
247 MSR_SILVERMONT_LASTBRANCH_3_FROM_IP is defined as MSR_LASTBRANCH_3_FROM_IP in SDM.\r
248 MSR_SILVERMONT_LASTBRANCH_4_FROM_IP is defined as MSR_LASTBRANCH_4_FROM_IP in SDM.\r
249 MSR_SILVERMONT_LASTBRANCH_5_FROM_IP is defined as MSR_LASTBRANCH_5_FROM_IP in SDM.\r
250 MSR_SILVERMONT_LASTBRANCH_6_FROM_IP is defined as MSR_LASTBRANCH_6_FROM_IP in SDM.\r
251 MSR_SILVERMONT_LASTBRANCH_7_FROM_IP is defined as MSR_LASTBRANCH_7_FROM_IP in SDM.\r
053a6ae9
MK
252 @{\r
253**/\r
2f88bd3a
MK
254#define MSR_SILVERMONT_LASTBRANCH_0_FROM_IP 0x00000040\r
255#define MSR_SILVERMONT_LASTBRANCH_1_FROM_IP 0x00000041\r
256#define MSR_SILVERMONT_LASTBRANCH_2_FROM_IP 0x00000042\r
257#define MSR_SILVERMONT_LASTBRANCH_3_FROM_IP 0x00000043\r
258#define MSR_SILVERMONT_LASTBRANCH_4_FROM_IP 0x00000044\r
259#define MSR_SILVERMONT_LASTBRANCH_5_FROM_IP 0x00000045\r
260#define MSR_SILVERMONT_LASTBRANCH_6_FROM_IP 0x00000046\r
261#define MSR_SILVERMONT_LASTBRANCH_7_FROM_IP 0x00000047\r
053a6ae9
MK
262/// @}\r
263\r
053a6ae9
MK
264/**\r
265 Core. Last Branch Record n To IP (R/W) One of eight pairs of last branch\r
0f16be6d
HW
266 record registers on the last branch record stack. The To_IP part of the\r
267 stack contains pointers to the destination instruction.\r
053a6ae9
MK
268\r
269 @param ECX MSR_SILVERMONT_LASTBRANCH_n_TO_IP\r
270 @param EAX Lower 32-bits of MSR value.\r
271 @param EDX Upper 32-bits of MSR value.\r
272\r
273 <b>Example usage</b>\r
274 @code\r
275 UINT64 Msr;\r
276\r
277 Msr = AsmReadMsr64 (MSR_SILVERMONT_LASTBRANCH_0_TO_IP);\r
278 AsmWriteMsr64 (MSR_SILVERMONT_LASTBRANCH_0_TO_IP, Msr);\r
279 @endcode\r
94fe1b5f
JF
280 @note MSR_SILVERMONT_LASTBRANCH_0_TO_IP is defined as MSR_LASTBRANCH_0_TO_IP in SDM.\r
281 MSR_SILVERMONT_LASTBRANCH_1_TO_IP is defined as MSR_LASTBRANCH_1_TO_IP in SDM.\r
282 MSR_SILVERMONT_LASTBRANCH_2_TO_IP is defined as MSR_LASTBRANCH_2_TO_IP in SDM.\r
283 MSR_SILVERMONT_LASTBRANCH_3_TO_IP is defined as MSR_LASTBRANCH_3_TO_IP in SDM.\r
284 MSR_SILVERMONT_LASTBRANCH_4_TO_IP is defined as MSR_LASTBRANCH_4_TO_IP in SDM.\r
285 MSR_SILVERMONT_LASTBRANCH_5_TO_IP is defined as MSR_LASTBRANCH_5_TO_IP in SDM.\r
286 MSR_SILVERMONT_LASTBRANCH_6_TO_IP is defined as MSR_LASTBRANCH_6_TO_IP in SDM.\r
287 MSR_SILVERMONT_LASTBRANCH_7_TO_IP is defined as MSR_LASTBRANCH_7_TO_IP in SDM.\r
053a6ae9
MK
288 @{\r
289**/\r
2f88bd3a
MK
290#define MSR_SILVERMONT_LASTBRANCH_0_TO_IP 0x00000060\r
291#define MSR_SILVERMONT_LASTBRANCH_1_TO_IP 0x00000061\r
292#define MSR_SILVERMONT_LASTBRANCH_2_TO_IP 0x00000062\r
293#define MSR_SILVERMONT_LASTBRANCH_3_TO_IP 0x00000063\r
294#define MSR_SILVERMONT_LASTBRANCH_4_TO_IP 0x00000064\r
295#define MSR_SILVERMONT_LASTBRANCH_5_TO_IP 0x00000065\r
296#define MSR_SILVERMONT_LASTBRANCH_6_TO_IP 0x00000066\r
297#define MSR_SILVERMONT_LASTBRANCH_7_TO_IP 0x00000067\r
053a6ae9
MK
298/// @}\r
299\r
053a6ae9 300/**\r
0f16be6d 301 Module. Scalable Bus Speed(RO) This field indicates the intended scalable\r
053a6ae9
MK
302 bus clock speed for processors based on Silvermont microarchitecture:.\r
303\r
304 @param ECX MSR_SILVERMONT_FSB_FREQ (0x000000CD)\r
305 @param EAX Lower 32-bits of MSR value.\r
306 Described by the type MSR_SILVERMONT_FSB_FREQ_REGISTER.\r
307 @param EDX Upper 32-bits of MSR value.\r
308 Described by the type MSR_SILVERMONT_FSB_FREQ_REGISTER.\r
309\r
310 <b>Example usage</b>\r
311 @code\r
312 MSR_SILVERMONT_FSB_FREQ_REGISTER Msr;\r
313\r
314 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_FSB_FREQ);\r
315 @endcode\r
94fe1b5f 316 @note MSR_SILVERMONT_FSB_FREQ is defined as MSR_FSB_FREQ in SDM.\r
053a6ae9 317**/\r
2f88bd3a 318#define MSR_SILVERMONT_FSB_FREQ 0x000000CD\r
053a6ae9
MK
319\r
320/**\r
321 MSR information returned for MSR index #MSR_SILVERMONT_FSB_FREQ\r
322**/\r
323typedef union {\r
324 ///\r
325 /// Individual bit fields\r
326 ///\r
327 struct {\r
328 ///\r
329 /// [Bits 3:0] Scalable Bus Speed\r
330 ///\r
331 /// Silvermont Processor Family\r
332 /// ---------------------------\r
333 /// 100B: 080.0 MHz\r
334 /// 000B: 083.3 MHz\r
335 /// 001B: 100.0 MHz\r
336 /// 010B: 133.3 MHz\r
337 /// 011B: 116.7 MHz\r
338 ///\r
339 /// Airmont Processor Family\r
340 /// ---------------------------\r
341 /// 0000B: 083.3 MHz\r
342 /// 0001B: 100.0 MHz\r
343 /// 0010B: 133.3 MHz\r
344 /// 0011B: 116.7 MHz\r
345 /// 0100B: 080.0 MHz\r
346 /// 0101B: 093.3 MHz\r
347 /// 0110B: 090.0 MHz\r
348 /// 0111B: 088.9 MHz\r
349 /// 1000B: 087.5 MHz\r
350 ///\r
2f88bd3a
MK
351 UINT32 ScalableBusSpeed : 4;\r
352 UINT32 Reserved1 : 28;\r
353 UINT32 Reserved2 : 32;\r
053a6ae9
MK
354 } Bits;\r
355 ///\r
356 /// All bit fields as a 32-bit value\r
357 ///\r
2f88bd3a 358 UINT32 Uint32;\r
053a6ae9
MK
359 ///\r
360 /// All bit fields as a 64-bit value\r
361 ///\r
2f88bd3a 362 UINT64 Uint64;\r
053a6ae9
MK
363} MSR_SILVERMONT_FSB_FREQ_REGISTER;\r
364\r
47f75d21
ED
365/**\r
366 Package. Platform Information: Contains power management and other model\r
367 specific features enumeration. See http://biosbits.org.\r
368\r
369 @param ECX MSR_SILVERMONT_PLATFORM_INFO (0x000000CE)\r
370 @param EAX Lower 32-bits of MSR value.\r
371 Described by the type MSR_SILVERMONT_PLATFORM_INFO_REGISTER.\r
372 @param EDX Upper 32-bits of MSR value.\r
373 Described by the type MSR_SILVERMONT_PLATFORM_INFO_REGISTER.\r
374\r
375 <b>Example usage</b>\r
376 @code\r
377 MSR_SILVERMONT_PLATFORM_INFO_REGISTER Msr;\r
378\r
379 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PLATFORM_INFO);\r
380 AsmWriteMsr64 (MSR_SILVERMONT_PLATFORM_INFO, Msr.Uint64);\r
381 @endcode\r
382**/\r
2f88bd3a 383#define MSR_SILVERMONT_PLATFORM_INFO 0x000000CE\r
47f75d21
ED
384\r
385/**\r
386 MSR information returned for MSR index #MSR_SILVERMONT_PLATFORM_INFO\r
387**/\r
388typedef union {\r
389 ///\r
390 /// Individual bit fields\r
391 ///\r
392 struct {\r
2f88bd3a 393 UINT32 Reserved1 : 8;\r
47f75d21
ED
394 ///\r
395 /// [Bits 15:8] Package. Maximum Non-Turbo Ratio (R/O) This is the ratio\r
396 /// of the maximum frequency that does not require turbo. Frequency =\r
397 /// ratio * Scalable Bus Frequency.\r
398 ///\r
2f88bd3a
MK
399 UINT32 MaximumNon_TurboRatio : 8;\r
400 UINT32 Reserved2 : 16;\r
401 UINT32 Reserved3 : 32;\r
47f75d21
ED
402 } Bits;\r
403 ///\r
404 /// All bit fields as a 32-bit value\r
405 ///\r
2f88bd3a 406 UINT32 Uint32;\r
47f75d21
ED
407 ///\r
408 /// All bit fields as a 64-bit value\r
409 ///\r
2f88bd3a 410 UINT64 Uint64;\r
47f75d21
ED
411} MSR_SILVERMONT_PLATFORM_INFO_REGISTER;\r
412\r
053a6ae9 413/**\r
0f16be6d 414 Module. C-State Configuration Control (R/W) Note: C-state values are\r
053a6ae9
MK
415 processor specific C-state code names, unrelated to MWAIT extension C-state\r
416 parameters or ACPI CStates. See http://biosbits.org.\r
417\r
418 @param ECX MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL (0x000000E2)\r
419 @param EAX Lower 32-bits of MSR value.\r
420 Described by the type MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL_REGISTER.\r
421 @param EDX Upper 32-bits of MSR value.\r
422 Described by the type MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL_REGISTER.\r
423\r
424 <b>Example usage</b>\r
425 @code\r
426 MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL_REGISTER Msr;\r
427\r
428 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL);\r
429 AsmWriteMsr64 (MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL, Msr.Uint64);\r
430 @endcode\r
94fe1b5f 431 @note MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL is defined as MSR_PKG_CST_CONFIG_CONTROL in SDM.\r
053a6ae9 432**/\r
2f88bd3a 433#define MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL 0x000000E2\r
053a6ae9
MK
434\r
435/**\r
436 MSR information returned for MSR index #MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL\r
437**/\r
438typedef union {\r
439 ///\r
440 /// Individual bit fields\r
441 ///\r
442 struct {\r
443 ///\r
444 /// [Bits 2:0] Package C-State Limit (R/W) Specifies the lowest\r
445 /// processor-specific C-state code name (consuming the least power). for\r
446 /// the package. The default is set as factory-configured package C-state\r
447 /// limit. The following C-state code name encodings are supported: 000b:\r
448 /// C0 (no package C-sate support) 001b: C1 (Behavior is the same as 000b)\r
449 /// 100b: C4 110b: C6 111b: C7 (Silvermont only).\r
450 ///\r
2f88bd3a
MK
451 UINT32 Limit : 3;\r
452 UINT32 Reserved1 : 7;\r
053a6ae9
MK
453 ///\r
454 /// [Bit 10] I/O MWAIT Redirection Enable (R/W) When set, will map\r
455 /// IO_read instructions sent to IO register specified by\r
456 /// MSR_PMG_IO_CAPTURE_BASE to MWAIT instructions.\r
457 ///\r
2f88bd3a
MK
458 UINT32 IO_MWAIT : 1;\r
459 UINT32 Reserved2 : 4;\r
053a6ae9
MK
460 ///\r
461 /// [Bit 15] CFG Lock (R/WO) When set, lock bits 15:0 of this register\r
462 /// until next reset.\r
463 ///\r
2f88bd3a
MK
464 UINT32 CFGLock : 1;\r
465 UINT32 Reserved3 : 16;\r
466 UINT32 Reserved4 : 32;\r
053a6ae9
MK
467 } Bits;\r
468 ///\r
469 /// All bit fields as a 32-bit value\r
470 ///\r
2f88bd3a 471 UINT32 Uint32;\r
053a6ae9
MK
472 ///\r
473 /// All bit fields as a 64-bit value\r
474 ///\r
2f88bd3a 475 UINT64 Uint64;\r
053a6ae9
MK
476} MSR_SILVERMONT_PKG_CST_CONFIG_CONTROL_REGISTER;\r
477\r
053a6ae9 478/**\r
0f16be6d 479 Module. Power Management IO Redirection in C-state (R/W) See\r
053a6ae9
MK
480 http://biosbits.org.\r
481\r
482 @param ECX MSR_SILVERMONT_PMG_IO_CAPTURE_BASE (0x000000E4)\r
483 @param EAX Lower 32-bits of MSR value.\r
484 Described by the type MSR_SILVERMONT_PMG_IO_CAPTURE_BASE_REGISTER.\r
485 @param EDX Upper 32-bits of MSR value.\r
486 Described by the type MSR_SILVERMONT_PMG_IO_CAPTURE_BASE_REGISTER.\r
487\r
488 <b>Example usage</b>\r
489 @code\r
490 MSR_SILVERMONT_PMG_IO_CAPTURE_BASE_REGISTER Msr;\r
491\r
492 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PMG_IO_CAPTURE_BASE);\r
493 AsmWriteMsr64 (MSR_SILVERMONT_PMG_IO_CAPTURE_BASE, Msr.Uint64);\r
494 @endcode\r
94fe1b5f 495 @note MSR_SILVERMONT_PMG_IO_CAPTURE_BASE is defined as MSR_PMG_IO_CAPTURE_BASE in SDM.\r
053a6ae9 496**/\r
2f88bd3a 497#define MSR_SILVERMONT_PMG_IO_CAPTURE_BASE 0x000000E4\r
053a6ae9
MK
498\r
499/**\r
500 MSR information returned for MSR index #MSR_SILVERMONT_PMG_IO_CAPTURE_BASE\r
501**/\r
502typedef union {\r
503 ///\r
504 /// Individual bit fields\r
505 ///\r
506 struct {\r
507 ///\r
508 /// [Bits 15:0] LVL_2 Base Address (R/W) Specifies the base address\r
509 /// visible to software for IO redirection. If IO MWAIT Redirection is\r
510 /// enabled, reads to this address will be consumed by the power\r
511 /// management logic and decoded to MWAIT instructions. When IO port\r
512 /// address redirection is enabled, this is the IO port address reported\r
513 /// to the OS/software.\r
514 ///\r
2f88bd3a 515 UINT32 Lvl2Base : 16;\r
053a6ae9
MK
516 ///\r
517 /// [Bits 18:16] C-state Range (R/W) Specifies the encoding value of the\r
518 /// maximum C-State code name to be included when IO read to MWAIT\r
519 /// redirection is enabled by MSR_PKG_CST_CONFIG_CONTROL[bit10]: 100b - C4\r
520 /// is the max C-State to include 110b - C6 is the max C-State to include\r
521 /// 111b - C7 is the max C-State to include.\r
522 ///\r
2f88bd3a
MK
523 UINT32 CStateRange : 3;\r
524 UINT32 Reserved1 : 13;\r
525 UINT32 Reserved2 : 32;\r
053a6ae9
MK
526 } Bits;\r
527 ///\r
528 /// All bit fields as a 32-bit value\r
529 ///\r
2f88bd3a 530 UINT32 Uint32;\r
053a6ae9
MK
531 ///\r
532 /// All bit fields as a 64-bit value\r
533 ///\r
2f88bd3a 534 UINT64 Uint64;\r
053a6ae9
MK
535} MSR_SILVERMONT_PMG_IO_CAPTURE_BASE_REGISTER;\r
536\r
053a6ae9 537/**\r
0f16be6d 538 Module.\r
053a6ae9
MK
539\r
540 @param ECX MSR_SILVERMONT_BBL_CR_CTL3 (0x0000011E)\r
541 @param EAX Lower 32-bits of MSR value.\r
542 Described by the type MSR_SILVERMONT_BBL_CR_CTL3_REGISTER.\r
543 @param EDX Upper 32-bits of MSR value.\r
544 Described by the type MSR_SILVERMONT_BBL_CR_CTL3_REGISTER.\r
545\r
546 <b>Example usage</b>\r
547 @code\r
548 MSR_SILVERMONT_BBL_CR_CTL3_REGISTER Msr;\r
549\r
550 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_BBL_CR_CTL3);\r
551 AsmWriteMsr64 (MSR_SILVERMONT_BBL_CR_CTL3, Msr.Uint64);\r
552 @endcode\r
94fe1b5f 553 @note MSR_SILVERMONT_BBL_CR_CTL3 is defined as MSR_BBL_CR_CTL3 in SDM.\r
053a6ae9 554**/\r
2f88bd3a 555#define MSR_SILVERMONT_BBL_CR_CTL3 0x0000011E\r
053a6ae9
MK
556\r
557/**\r
558 MSR information returned for MSR index #MSR_SILVERMONT_BBL_CR_CTL3\r
559**/\r
560typedef union {\r
561 ///\r
562 /// Individual bit fields\r
563 ///\r
564 struct {\r
565 ///\r
566 /// [Bit 0] L2 Hardware Enabled (RO) 1 = If the L2 is hardware-enabled 0 =\r
567 /// Indicates if the L2 is hardware-disabled.\r
568 ///\r
2f88bd3a
MK
569 UINT32 L2HardwareEnabled : 1;\r
570 UINT32 Reserved1 : 7;\r
053a6ae9
MK
571 ///\r
572 /// [Bit 8] L2 Enabled. (R/W) 1 = L2 cache has been initialized 0 =\r
573 /// Disabled (default) Until this bit is set the processor will not\r
574 /// respond to the WBINVD instruction or the assertion of the FLUSH# input.\r
575 ///\r
2f88bd3a
MK
576 UINT32 L2Enabled : 1;\r
577 UINT32 Reserved2 : 14;\r
053a6ae9
MK
578 ///\r
579 /// [Bit 23] L2 Not Present (RO) 1. = L2 Present 2. = L2 Not Present.\r
580 ///\r
2f88bd3a
MK
581 UINT32 L2NotPresent : 1;\r
582 UINT32 Reserved3 : 8;\r
583 UINT32 Reserved4 : 32;\r
053a6ae9
MK
584 } Bits;\r
585 ///\r
586 /// All bit fields as a 32-bit value\r
587 ///\r
2f88bd3a 588 UINT32 Uint32;\r
053a6ae9
MK
589 ///\r
590 /// All bit fields as a 64-bit value\r
591 ///\r
2f88bd3a 592 UINT64 Uint64;\r
053a6ae9
MK
593} MSR_SILVERMONT_BBL_CR_CTL3_REGISTER;\r
594\r
053a6ae9
MK
595/**\r
596 Core. AES Configuration (RW-L) Privileged post-BIOS agent must provide a #GP\r
597 handler to handle unsuccessful read of this MSR.\r
598\r
599 @param ECX MSR_SILVERMONT_FEATURE_CONFIG (0x0000013C)\r
600 @param EAX Lower 32-bits of MSR value.\r
601 Described by the type MSR_SILVERMONT_FEATURE_CONFIG_REGISTER.\r
602 @param EDX Upper 32-bits of MSR value.\r
603 Described by the type MSR_SILVERMONT_FEATURE_CONFIG_REGISTER.\r
604\r
605 <b>Example usage</b>\r
606 @code\r
607 MSR_SILVERMONT_FEATURE_CONFIG_REGISTER Msr;\r
608\r
609 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_FEATURE_CONFIG);\r
610 AsmWriteMsr64 (MSR_SILVERMONT_FEATURE_CONFIG, Msr.Uint64);\r
611 @endcode\r
94fe1b5f 612 @note MSR_SILVERMONT_FEATURE_CONFIG is defined as MSR_FEATURE_CONFIG in SDM.\r
053a6ae9 613**/\r
2f88bd3a 614#define MSR_SILVERMONT_FEATURE_CONFIG 0x0000013C\r
053a6ae9
MK
615\r
616/**\r
617 MSR information returned for MSR index #MSR_SILVERMONT_FEATURE_CONFIG\r
618**/\r
619typedef union {\r
620 ///\r
621 /// Individual bit fields\r
622 ///\r
623 struct {\r
624 ///\r
625 /// [Bits 1:0] AES Configuration (RW-L) Upon a successful read of this\r
626 /// MSR, the configuration of AES instruction set availability is as\r
627 /// follows: 11b: AES instructions are not available until next RESET.\r
628 /// otherwise, AES instructions are available. Note, AES instruction set\r
629 /// is not available if read is unsuccessful. If the configuration is not\r
630 /// 01b, AES instruction can be mis-configured if a privileged agent\r
631 /// unintentionally writes 11b.\r
632 ///\r
2f88bd3a
MK
633 UINT32 AESConfiguration : 2;\r
634 UINT32 Reserved1 : 30;\r
635 UINT32 Reserved2 : 32;\r
053a6ae9
MK
636 } Bits;\r
637 ///\r
638 /// All bit fields as a 32-bit value\r
639 ///\r
2f88bd3a 640 UINT32 Uint32;\r
053a6ae9
MK
641 ///\r
642 /// All bit fields as a 64-bit value\r
643 ///\r
2f88bd3a 644 UINT64 Uint64;\r
053a6ae9
MK
645} MSR_SILVERMONT_FEATURE_CONFIG_REGISTER;\r
646\r
053a6ae9
MK
647/**\r
648 Enable Misc. Processor Features (R/W) Allows a variety of processor\r
649 functions to be enabled and disabled.\r
650\r
651 @param ECX MSR_SILVERMONT_IA32_MISC_ENABLE (0x000001A0)\r
652 @param EAX Lower 32-bits of MSR value.\r
653 Described by the type MSR_SILVERMONT_IA32_MISC_ENABLE_REGISTER.\r
654 @param EDX Upper 32-bits of MSR value.\r
655 Described by the type MSR_SILVERMONT_IA32_MISC_ENABLE_REGISTER.\r
656\r
657 <b>Example usage</b>\r
658 @code\r
659 MSR_SILVERMONT_IA32_MISC_ENABLE_REGISTER Msr;\r
660\r
661 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_IA32_MISC_ENABLE);\r
662 AsmWriteMsr64 (MSR_SILVERMONT_IA32_MISC_ENABLE, Msr.Uint64);\r
663 @endcode\r
94fe1b5f 664 @note MSR_SILVERMONT_IA32_MISC_ENABLE is defined as IA32_MISC_ENABLE in SDM.\r
053a6ae9 665**/\r
2f88bd3a 666#define MSR_SILVERMONT_IA32_MISC_ENABLE 0x000001A0\r
053a6ae9
MK
667\r
668/**\r
669 MSR information returned for MSR index #MSR_SILVERMONT_IA32_MISC_ENABLE\r
670**/\r
671typedef union {\r
672 ///\r
673 /// Individual bit fields\r
674 ///\r
675 struct {\r
676 ///\r
ba1a2d11 677 /// [Bit 0] Core. Fast-Strings Enable See Table 2-2.\r
053a6ae9 678 ///\r
2f88bd3a
MK
679 UINT32 FastStrings : 1;\r
680 UINT32 Reserved1 : 2;\r
053a6ae9 681 ///\r
0f16be6d 682 /// [Bit 3] Module. Automatic Thermal Control Circuit Enable (R/W) See\r
ba1a2d11 683 /// Table 2-2. Default value is 0.\r
053a6ae9 684 ///\r
2f88bd3a
MK
685 UINT32 AutomaticThermalControlCircuit : 1;\r
686 UINT32 Reserved2 : 3;\r
053a6ae9 687 ///\r
ba1a2d11 688 /// [Bit 7] Core. Performance Monitoring Available (R) See Table 2-2.\r
053a6ae9 689 ///\r
2f88bd3a
MK
690 UINT32 PerformanceMonitoring : 1;\r
691 UINT32 Reserved3 : 3;\r
053a6ae9 692 ///\r
ba1a2d11 693 /// [Bit 11] Core. Branch Trace Storage Unavailable (RO) See Table 2-2.\r
053a6ae9 694 ///\r
2f88bd3a 695 UINT32 BTS : 1;\r
053a6ae9 696 ///\r
0f16be6d 697 /// [Bit 12] Core. Processor Event Based Sampling Unavailable (RO) See\r
ba1a2d11 698 /// Table 2-2.\r
053a6ae9 699 ///\r
2f88bd3a
MK
700 UINT32 PEBS : 1;\r
701 UINT32 Reserved4 : 3;\r
053a6ae9 702 ///\r
0f16be6d 703 /// [Bit 16] Module. Enhanced Intel SpeedStep Technology Enable (R/W) See\r
ba1a2d11 704 /// Table 2-2.\r
053a6ae9 705 ///\r
2f88bd3a
MK
706 UINT32 EIST : 1;\r
707 UINT32 Reserved5 : 1;\r
053a6ae9 708 ///\r
ba1a2d11 709 /// [Bit 18] Core. ENABLE MONITOR FSM (R/W) See Table 2-2.\r
053a6ae9 710 ///\r
2f88bd3a
MK
711 UINT32 MONITOR : 1;\r
712 UINT32 Reserved6 : 3;\r
053a6ae9 713 ///\r
ba1a2d11 714 /// [Bit 22] Core. Limit CPUID Maxval (R/W) See Table 2-2.\r
053a6ae9 715 ///\r
2f88bd3a 716 UINT32 LimitCpuidMaxval : 1;\r
053a6ae9 717 ///\r
ba1a2d11 718 /// [Bit 23] Module. xTPR Message Disable (R/W) See Table 2-2.\r
053a6ae9 719 ///\r
2f88bd3a
MK
720 UINT32 xTPR_Message_Disable : 1;\r
721 UINT32 Reserved7 : 8;\r
722 UINT32 Reserved8 : 2;\r
053a6ae9 723 ///\r
ba1a2d11 724 /// [Bit 34] Core. XD Bit Disable (R/W) See Table 2-2.\r
053a6ae9 725 ///\r
2f88bd3a
MK
726 UINT32 XD : 1;\r
727 UINT32 Reserved9 : 3;\r
053a6ae9 728 ///\r
0f16be6d 729 /// [Bit 38] Module. Turbo Mode Disable (R/W) When set to 1 on processors\r
053a6ae9
MK
730 /// that support Intel Turbo Boost Technology, the turbo mode feature is\r
731 /// disabled and the IDA_Enable feature flag will be clear (CPUID.06H:\r
732 /// EAX[1]=0). When set to a 0 on processors that support IDA, CPUID.06H:\r
733 /// EAX[1] reports the processor's support of turbo mode is enabled. Note:\r
734 /// the power-on default value is used by BIOS to detect hardware support\r
735 /// of turbo mode. If power-on default value is 1, turbo mode is available\r
736 /// in the processor. If power-on default value is 0, turbo mode is not\r
737 /// available.\r
738 ///\r
2f88bd3a
MK
739 UINT32 TurboModeDisable : 1;\r
740 UINT32 Reserved10 : 25;\r
053a6ae9
MK
741 } Bits;\r
742 ///\r
743 /// All bit fields as a 64-bit value\r
744 ///\r
2f88bd3a 745 UINT64 Uint64;\r
053a6ae9
MK
746} MSR_SILVERMONT_IA32_MISC_ENABLE_REGISTER;\r
747\r
053a6ae9
MK
748/**\r
749 Package.\r
750\r
751 @param ECX MSR_SILVERMONT_TEMPERATURE_TARGET (0x000001A2)\r
752 @param EAX Lower 32-bits of MSR value.\r
753 Described by the type MSR_SILVERMONT_TEMPERATURE_TARGET_REGISTER.\r
754 @param EDX Upper 32-bits of MSR value.\r
755 Described by the type MSR_SILVERMONT_TEMPERATURE_TARGET_REGISTER.\r
756\r
757 <b>Example usage</b>\r
758 @code\r
759 MSR_SILVERMONT_TEMPERATURE_TARGET_REGISTER Msr;\r
760\r
761 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_TEMPERATURE_TARGET);\r
762 AsmWriteMsr64 (MSR_SILVERMONT_TEMPERATURE_TARGET, Msr.Uint64);\r
763 @endcode\r
94fe1b5f 764 @note MSR_SILVERMONT_TEMPERATURE_TARGET is defined as MSR_TEMPERATURE_TARGET in SDM.\r
053a6ae9 765**/\r
2f88bd3a 766#define MSR_SILVERMONT_TEMPERATURE_TARGET 0x000001A2\r
053a6ae9
MK
767\r
768/**\r
769 MSR information returned for MSR index #MSR_SILVERMONT_TEMPERATURE_TARGET\r
770**/\r
771typedef union {\r
772 ///\r
773 /// Individual bit fields\r
774 ///\r
775 struct {\r
2f88bd3a 776 UINT32 Reserved1 : 16;\r
053a6ae9
MK
777 ///\r
778 /// [Bits 23:16] Temperature Target (R) The default thermal throttling or\r
779 /// PROCHOT# activation temperature in degree C, The effective temperature\r
780 /// for thermal throttling or PROCHOT# activation is "Temperature Target"\r
781 /// + "Target Offset".\r
782 ///\r
2f88bd3a 783 UINT32 TemperatureTarget : 8;\r
053a6ae9
MK
784 ///\r
785 /// [Bits 29:24] Target Offset (R/W) Specifies an offset in degrees C to\r
786 /// adjust the throttling and PROCHOT# activation temperature from the\r
787 /// default target specified in TEMPERATURE_TARGET (bits 23:16).\r
788 ///\r
2f88bd3a
MK
789 UINT32 TargetOffset : 6;\r
790 UINT32 Reserved2 : 2;\r
791 UINT32 Reserved3 : 32;\r
053a6ae9
MK
792 } Bits;\r
793 ///\r
794 /// All bit fields as a 32-bit value\r
795 ///\r
2f88bd3a 796 UINT32 Uint32;\r
053a6ae9
MK
797 ///\r
798 /// All bit fields as a 64-bit value\r
799 ///\r
2f88bd3a 800 UINT64 Uint64;\r
053a6ae9
MK
801} MSR_SILVERMONT_TEMPERATURE_TARGET_REGISTER;\r
802\r
053a6ae9 803/**\r
0f16be6d
HW
804 Miscellaneous Feature Control (R/W).\r
805\r
806 @param ECX MSR_SILVERMONT_MISC_FEATURE_CONTROL (0x000001A4)\r
807 @param EAX Lower 32-bits of MSR value.\r
808 Described by the type MSR_SILVERMONT_MISC_FEATURE_CONTROL_REGISTER.\r
809 @param EDX Upper 32-bits of MSR value.\r
810 Described by the type MSR_SILVERMONT_MISC_FEATURE_CONTROL_REGISTER.\r
811\r
812 <b>Example usage</b>\r
813 @code\r
814 MSR_SILVERMONT_MISC_FEATURE_CONTROL_REGISTER Msr;\r
815\r
816 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_MISC_FEATURE_CONTROL);\r
817 AsmWriteMsr64 (MSR_SILVERMONT_MISC_FEATURE_CONTROL, Msr.Uint64);\r
818 @endcode\r
819 @note MSR_SILVERMONT_MISC_FEATURE_CONTROL is defined as MSR_MISC_FEATURE_CONTROL in SDM.\r
820**/\r
2f88bd3a 821#define MSR_SILVERMONT_MISC_FEATURE_CONTROL 0x000001A4\r
0f16be6d
HW
822\r
823/**\r
824 MSR information returned for MSR index #MSR_SILVERMONT_MISC_FEATURE_CONTROL\r
825**/\r
826typedef union {\r
827 ///\r
828 /// Individual bit fields\r
829 ///\r
830 struct {\r
831 ///\r
832 /// [Bit 0] Core. L2 Hardware Prefetcher Disable (R/W) If 1, disables the\r
833 /// L2 hardware prefetcher, which fetches additional lines of code or data\r
834 /// into the L2 cache.\r
835 ///\r
2f88bd3a
MK
836 UINT32 L2HardwarePrefetcherDisable : 1;\r
837 UINT32 Reserved1 : 1;\r
0f16be6d
HW
838 ///\r
839 /// [Bit 2] Core. DCU Hardware Prefetcher Disable (R/W) If 1, disables\r
840 /// the L1 data cache prefetcher, which fetches the next cache line into\r
841 /// L1 data cache.\r
842 ///\r
2f88bd3a
MK
843 UINT32 DCUHardwarePrefetcherDisable : 1;\r
844 UINT32 Reserved2 : 29;\r
845 UINT32 Reserved3 : 32;\r
0f16be6d
HW
846 } Bits;\r
847 ///\r
848 /// All bit fields as a 32-bit value\r
849 ///\r
2f88bd3a 850 UINT32 Uint32;\r
0f16be6d
HW
851 ///\r
852 /// All bit fields as a 64-bit value\r
853 ///\r
2f88bd3a 854 UINT64 Uint64;\r
0f16be6d
HW
855} MSR_SILVERMONT_MISC_FEATURE_CONTROL_REGISTER;\r
856\r
0f16be6d
HW
857/**\r
858 Module. Offcore Response Event Select Register (R/W).\r
053a6ae9
MK
859\r
860 @param ECX MSR_SILVERMONT_OFFCORE_RSP_0 (0x000001A6)\r
861 @param EAX Lower 32-bits of MSR value.\r
862 @param EDX Upper 32-bits of MSR value.\r
863\r
864 <b>Example usage</b>\r
865 @code\r
866 UINT64 Msr;\r
867\r
868 Msr = AsmReadMsr64 (MSR_SILVERMONT_OFFCORE_RSP_0);\r
869 AsmWriteMsr64 (MSR_SILVERMONT_OFFCORE_RSP_0, Msr);\r
870 @endcode\r
94fe1b5f 871 @note MSR_SILVERMONT_OFFCORE_RSP_0 is defined as MSR_OFFCORE_RSP_0 in SDM.\r
053a6ae9 872**/\r
2f88bd3a 873#define MSR_SILVERMONT_OFFCORE_RSP_0 0x000001A6\r
053a6ae9
MK
874\r
875/**\r
0f16be6d 876 Module. Offcore Response Event Select Register (R/W).\r
053a6ae9
MK
877\r
878 @param ECX MSR_SILVERMONT_OFFCORE_RSP_1 (0x000001A7)\r
879 @param EAX Lower 32-bits of MSR value.\r
880 @param EDX Upper 32-bits of MSR value.\r
881\r
882 <b>Example usage</b>\r
883 @code\r
884 UINT64 Msr;\r
885\r
886 Msr = AsmReadMsr64 (MSR_SILVERMONT_OFFCORE_RSP_1);\r
887 AsmWriteMsr64 (MSR_SILVERMONT_OFFCORE_RSP_1, Msr);\r
888 @endcode\r
94fe1b5f 889 @note MSR_SILVERMONT_OFFCORE_RSP_1 is defined as MSR_OFFCORE_RSP_1 in SDM.\r
053a6ae9 890**/\r
2f88bd3a 891#define MSR_SILVERMONT_OFFCORE_RSP_1 0x000001A7\r
053a6ae9
MK
892\r
893/**\r
894 Package. Maximum Ratio Limit of Turbo Mode (RW).\r
895\r
896 @param ECX MSR_SILVERMONT_TURBO_RATIO_LIMIT (0x000001AD)\r
897 @param EAX Lower 32-bits of MSR value.\r
898 Described by the type MSR_SILVERMONT_TURBO_RATIO_LIMIT_REGISTER.\r
899 @param EDX Upper 32-bits of MSR value.\r
900 Described by the type MSR_SILVERMONT_TURBO_RATIO_LIMIT_REGISTER.\r
901\r
902 <b>Example usage</b>\r
903 @code\r
904 MSR_SILVERMONT_TURBO_RATIO_LIMIT_REGISTER Msr;\r
905\r
906 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_TURBO_RATIO_LIMIT);\r
907 AsmWriteMsr64 (MSR_SILVERMONT_TURBO_RATIO_LIMIT, Msr.Uint64);\r
908 @endcode\r
94fe1b5f 909 @note MSR_SILVERMONT_TURBO_RATIO_LIMIT is defined as MSR_TURBO_RATIO_LIMIT in SDM.\r
053a6ae9 910**/\r
2f88bd3a 911#define MSR_SILVERMONT_TURBO_RATIO_LIMIT 0x000001AD\r
053a6ae9
MK
912\r
913/**\r
914 MSR information returned for MSR index #MSR_SILVERMONT_TURBO_RATIO_LIMIT\r
915**/\r
916typedef union {\r
917 ///\r
918 /// Individual bit fields\r
919 ///\r
920 struct {\r
921 ///\r
922 /// [Bits 7:0] Package. Maximum Ratio Limit for 1C Maximum turbo ratio\r
923 /// limit of 1 core active.\r
924 ///\r
2f88bd3a 925 UINT32 Maximum1C : 8;\r
053a6ae9
MK
926 ///\r
927 /// [Bits 15:8] Package. Maximum Ratio Limit for 2C Maximum turbo ratio\r
928 /// limit of 2 core active.\r
929 ///\r
2f88bd3a 930 UINT32 Maximum2C : 8;\r
053a6ae9
MK
931 ///\r
932 /// [Bits 23:16] Package. Maximum Ratio Limit for 3C Maximum turbo ratio\r
933 /// limit of 3 core active.\r
934 ///\r
2f88bd3a 935 UINT32 Maximum3C : 8;\r
053a6ae9
MK
936 ///\r
937 /// [Bits 31:24] Package. Maximum Ratio Limit for 4C Maximum turbo ratio\r
938 /// limit of 4 core active.\r
939 ///\r
2f88bd3a 940 UINT32 Maximum4C : 8;\r
053a6ae9
MK
941 ///\r
942 /// [Bits 39:32] Package. Maximum Ratio Limit for 5C Maximum turbo ratio\r
943 /// limit of 5 core active.\r
944 ///\r
2f88bd3a 945 UINT32 Maximum5C : 8;\r
053a6ae9
MK
946 ///\r
947 /// [Bits 47:40] Package. Maximum Ratio Limit for 6C Maximum turbo ratio\r
948 /// limit of 6 core active.\r
949 ///\r
2f88bd3a 950 UINT32 Maximum6C : 8;\r
053a6ae9
MK
951 ///\r
952 /// [Bits 55:48] Package. Maximum Ratio Limit for 7C Maximum turbo ratio\r
953 /// limit of 7 core active.\r
954 ///\r
2f88bd3a 955 UINT32 Maximum7C : 8;\r
053a6ae9
MK
956 ///\r
957 /// [Bits 63:56] Package. Maximum Ratio Limit for 8C Maximum turbo ratio\r
958 /// limit of 8 core active.\r
959 ///\r
2f88bd3a 960 UINT32 Maximum8C : 8;\r
053a6ae9
MK
961 } Bits;\r
962 ///\r
963 /// All bit fields as a 64-bit value\r
964 ///\r
2f88bd3a 965 UINT64 Uint64;\r
053a6ae9
MK
966} MSR_SILVERMONT_TURBO_RATIO_LIMIT_REGISTER;\r
967\r
0f16be6d 968/**\r
ba1a2d11
ED
969 Core. Last Branch Record Filtering Select Register (R/W) See Section 17.9.2,\r
970 "Filtering of Last Branch Records.".\r
0f16be6d
HW
971\r
972 @param ECX MSR_SILVERMONT_LBR_SELECT (0x000001C8)\r
973 @param EAX Lower 32-bits of MSR value.\r
974 Described by the type MSR_SILVERMONT_LBR_SELECT_REGISTER.\r
975 @param EDX Upper 32-bits of MSR value.\r
976 Described by the type MSR_SILVERMONT_LBR_SELECT_REGISTER.\r
977\r
978 <b>Example usage</b>\r
979 @code\r
980 MSR_SILVERMONT_LBR_SELECT_REGISTER Msr;\r
981\r
982 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_LBR_SELECT);\r
983 AsmWriteMsr64 (MSR_SILVERMONT_LBR_SELECT, Msr.Uint64);\r
984 @endcode\r
985 @note MSR_SILVERMONT_LBR_SELECT is defined as MSR_LBR_SELECT in SDM.\r
986**/\r
2f88bd3a 987#define MSR_SILVERMONT_LBR_SELECT 0x000001C8\r
0f16be6d
HW
988\r
989/**\r
990 MSR information returned for MSR index #MSR_SILVERMONT_LBR_SELECT\r
991**/\r
992typedef union {\r
993 ///\r
994 /// Individual bit fields\r
995 ///\r
996 struct {\r
997 ///\r
998 /// [Bit 0] CPL_EQ_0.\r
999 ///\r
2f88bd3a 1000 UINT32 CPL_EQ_0 : 1;\r
0f16be6d
HW
1001 ///\r
1002 /// [Bit 1] CPL_NEQ_0.\r
1003 ///\r
2f88bd3a 1004 UINT32 CPL_NEQ_0 : 1;\r
0f16be6d
HW
1005 ///\r
1006 /// [Bit 2] JCC.\r
1007 ///\r
2f88bd3a 1008 UINT32 JCC : 1;\r
0f16be6d
HW
1009 ///\r
1010 /// [Bit 3] NEAR_REL_CALL.\r
1011 ///\r
2f88bd3a 1012 UINT32 NEAR_REL_CALL : 1;\r
0f16be6d
HW
1013 ///\r
1014 /// [Bit 4] NEAR_IND_CALL.\r
1015 ///\r
2f88bd3a 1016 UINT32 NEAR_IND_CALL : 1;\r
0f16be6d
HW
1017 ///\r
1018 /// [Bit 5] NEAR_RET.\r
1019 ///\r
2f88bd3a 1020 UINT32 NEAR_RET : 1;\r
0f16be6d
HW
1021 ///\r
1022 /// [Bit 6] NEAR_IND_JMP.\r
1023 ///\r
2f88bd3a 1024 UINT32 NEAR_IND_JMP : 1;\r
0f16be6d
HW
1025 ///\r
1026 /// [Bit 7] NEAR_REL_JMP.\r
1027 ///\r
2f88bd3a 1028 UINT32 NEAR_REL_JMP : 1;\r
0f16be6d
HW
1029 ///\r
1030 /// [Bit 8] FAR_BRANCH.\r
1031 ///\r
2f88bd3a
MK
1032 UINT32 FAR_BRANCH : 1;\r
1033 UINT32 Reserved1 : 23;\r
1034 UINT32 Reserved2 : 32;\r
0f16be6d
HW
1035 } Bits;\r
1036 ///\r
1037 /// All bit fields as a 32-bit value\r
1038 ///\r
2f88bd3a 1039 UINT32 Uint32;\r
0f16be6d
HW
1040 ///\r
1041 /// All bit fields as a 64-bit value\r
1042 ///\r
2f88bd3a 1043 UINT64 Uint64;\r
0f16be6d
HW
1044} MSR_SILVERMONT_LBR_SELECT_REGISTER;\r
1045\r
053a6ae9
MK
1046/**\r
1047 Core. Last Branch Record Stack TOS (R/W) Contains an index (bits 0-2) that\r
1048 points to the MSR containing the most recent branch record. See\r
0f16be6d 1049 MSR_LASTBRANCH_0_FROM_IP.\r
053a6ae9
MK
1050\r
1051 @param ECX MSR_SILVERMONT_LASTBRANCH_TOS (0x000001C9)\r
1052 @param EAX Lower 32-bits of MSR value.\r
1053 @param EDX Upper 32-bits of MSR value.\r
1054\r
1055 <b>Example usage</b>\r
1056 @code\r
1057 UINT64 Msr;\r
1058\r
1059 Msr = AsmReadMsr64 (MSR_SILVERMONT_LASTBRANCH_TOS);\r
1060 AsmWriteMsr64 (MSR_SILVERMONT_LASTBRANCH_TOS, Msr);\r
1061 @endcode\r
94fe1b5f 1062 @note MSR_SILVERMONT_LASTBRANCH_TOS is defined as MSR_LASTBRANCH_TOS in SDM.\r
053a6ae9 1063**/\r
2f88bd3a 1064#define MSR_SILVERMONT_LASTBRANCH_TOS 0x000001C9\r
053a6ae9
MK
1065\r
1066/**\r
1067 Core. Last Exception Record From Linear IP (R) Contains a pointer to the\r
1068 last branch instruction that the processor executed prior to the last\r
1069 exception that was generated or the last interrupt that was handled.\r
1070\r
1071 @param ECX MSR_SILVERMONT_LER_FROM_LIP (0x000001DD)\r
1072 @param EAX Lower 32-bits of MSR value.\r
1073 @param EDX Upper 32-bits of MSR value.\r
1074\r
1075 <b>Example usage</b>\r
1076 @code\r
1077 UINT64 Msr;\r
1078\r
1079 Msr = AsmReadMsr64 (MSR_SILVERMONT_LER_FROM_LIP);\r
1080 @endcode\r
94fe1b5f 1081 @note MSR_SILVERMONT_LER_FROM_LIP is defined as MSR_LER_FROM_LIP in SDM.\r
053a6ae9 1082**/\r
2f88bd3a 1083#define MSR_SILVERMONT_LER_FROM_LIP 0x000001DD\r
053a6ae9
MK
1084\r
1085/**\r
1086 Core. Last Exception Record To Linear IP (R) This area contains a pointer\r
1087 to the target of the last branch instruction that the processor executed\r
1088 prior to the last exception that was generated or the last interrupt that\r
1089 was handled.\r
1090\r
1091 @param ECX MSR_SILVERMONT_LER_TO_LIP (0x000001DE)\r
1092 @param EAX Lower 32-bits of MSR value.\r
1093 @param EDX Upper 32-bits of MSR value.\r
1094\r
1095 <b>Example usage</b>\r
1096 @code\r
1097 UINT64 Msr;\r
1098\r
1099 Msr = AsmReadMsr64 (MSR_SILVERMONT_LER_TO_LIP);\r
1100 @endcode\r
94fe1b5f 1101 @note MSR_SILVERMONT_LER_TO_LIP is defined as MSR_LER_TO_LIP in SDM.\r
053a6ae9 1102**/\r
2f88bd3a 1103#define MSR_SILVERMONT_LER_TO_LIP 0x000001DE\r
053a6ae9
MK
1104\r
1105/**\r
ba1a2d11 1106 Core. See Table 2-2. See Section 18.6.2.4, "Processor Event Based Sampling\r
053a6ae9
MK
1107 (PEBS).".\r
1108\r
1109 @param ECX MSR_SILVERMONT_PEBS_ENABLE (0x000003F1)\r
1110 @param EAX Lower 32-bits of MSR value.\r
1111 Described by the type MSR_SILVERMONT_PEBS_ENABLE_REGISTER.\r
1112 @param EDX Upper 32-bits of MSR value.\r
1113 Described by the type MSR_SILVERMONT_PEBS_ENABLE_REGISTER.\r
1114\r
1115 <b>Example usage</b>\r
1116 @code\r
1117 MSR_SILVERMONT_PEBS_ENABLE_REGISTER Msr;\r
1118\r
1119 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PEBS_ENABLE);\r
1120 AsmWriteMsr64 (MSR_SILVERMONT_PEBS_ENABLE, Msr.Uint64);\r
1121 @endcode\r
94fe1b5f 1122 @note MSR_SILVERMONT_PEBS_ENABLE is defined as MSR_PEBS_ENABLE in SDM.\r
053a6ae9 1123**/\r
2f88bd3a 1124#define MSR_SILVERMONT_PEBS_ENABLE 0x000003F1\r
053a6ae9
MK
1125\r
1126/**\r
1127 MSR information returned for MSR index #MSR_SILVERMONT_PEBS_ENABLE\r
1128**/\r
1129typedef union {\r
1130 ///\r
1131 /// Individual bit fields\r
1132 ///\r
1133 struct {\r
1134 ///\r
0f16be6d 1135 /// [Bit 0] Enable PEBS for precise event on IA32_PMC0. (R/W).\r
053a6ae9 1136 ///\r
2f88bd3a
MK
1137 UINT32 PEBS : 1;\r
1138 UINT32 Reserved1 : 31;\r
1139 UINT32 Reserved2 : 32;\r
053a6ae9
MK
1140 } Bits;\r
1141 ///\r
1142 /// All bit fields as a 32-bit value\r
1143 ///\r
2f88bd3a 1144 UINT32 Uint32;\r
053a6ae9
MK
1145 ///\r
1146 /// All bit fields as a 64-bit value\r
1147 ///\r
2f88bd3a 1148 UINT64 Uint64;\r
053a6ae9
MK
1149} MSR_SILVERMONT_PEBS_ENABLE_REGISTER;\r
1150\r
053a6ae9
MK
1151/**\r
1152 Package. Note: C-state values are processor specific C-state code names,\r
1153 unrelated to MWAIT extension C-state parameters or ACPI CStates. Package C6\r
1154 Residency Counter. (R/O) Value since last reset that this package is in\r
1155 processor-specific C6 states. Counts at the TSC Frequency.\r
1156\r
1157 @param ECX MSR_SILVERMONT_PKG_C6_RESIDENCY (0x000003FA)\r
1158 @param EAX Lower 32-bits of MSR value.\r
1159 @param EDX Upper 32-bits of MSR value.\r
1160\r
1161 <b>Example usage</b>\r
1162 @code\r
1163 UINT64 Msr;\r
1164\r
1165 Msr = AsmReadMsr64 (MSR_SILVERMONT_PKG_C6_RESIDENCY);\r
1166 AsmWriteMsr64 (MSR_SILVERMONT_PKG_C6_RESIDENCY, Msr);\r
1167 @endcode\r
94fe1b5f 1168 @note MSR_SILVERMONT_PKG_C6_RESIDENCY is defined as MSR_PKG_C6_RESIDENCY in SDM.\r
053a6ae9 1169**/\r
2f88bd3a 1170#define MSR_SILVERMONT_PKG_C6_RESIDENCY 0x000003FA\r
053a6ae9
MK
1171\r
1172/**\r
1173 Core. Note: C-state values are processor specific C-state code names,\r
1174 unrelated to MWAIT extension C-state parameters or ACPI CStates. CORE C6\r
1175 Residency Counter. (R/O) Value since last reset that this core is in\r
1176 processor-specific C6 states. Counts at the TSC Frequency.\r
1177\r
1178 @param ECX MSR_SILVERMONT_CORE_C6_RESIDENCY (0x000003FD)\r
1179 @param EAX Lower 32-bits of MSR value.\r
1180 @param EDX Upper 32-bits of MSR value.\r
1181\r
1182 <b>Example usage</b>\r
1183 @code\r
1184 UINT64 Msr;\r
1185\r
1186 Msr = AsmReadMsr64 (MSR_SILVERMONT_CORE_C6_RESIDENCY);\r
1187 AsmWriteMsr64 (MSR_SILVERMONT_CORE_C6_RESIDENCY, Msr);\r
1188 @endcode\r
94fe1b5f 1189 @note MSR_SILVERMONT_CORE_C6_RESIDENCY is defined as MSR_CORE_C6_RESIDENCY in SDM.\r
053a6ae9 1190**/\r
2f88bd3a 1191#define MSR_SILVERMONT_CORE_C6_RESIDENCY 0x000003FD\r
053a6ae9 1192\r
053a6ae9 1193/**\r
ba1a2d11 1194 Core. Capability Reporting Register of EPT and VPID (R/O) See Table 2-2.\r
053a6ae9
MK
1195\r
1196 @param ECX MSR_SILVERMONT_IA32_VMX_EPT_VPID_ENUM (0x0000048C)\r
1197 @param EAX Lower 32-bits of MSR value.\r
1198 @param EDX Upper 32-bits of MSR value.\r
1199\r
1200 <b>Example usage</b>\r
1201 @code\r
1202 UINT64 Msr;\r
1203\r
1204 Msr = AsmReadMsr64 (MSR_SILVERMONT_IA32_VMX_EPT_VPID_ENUM);\r
1205 @endcode\r
94fe1b5f 1206 @note MSR_SILVERMONT_IA32_VMX_EPT_VPID_ENUM is defined as IA32_VMX_EPT_VPID_ENUM in SDM.\r
053a6ae9 1207**/\r
2f88bd3a 1208#define MSR_SILVERMONT_IA32_VMX_EPT_VPID_ENUM 0x0000048C\r
053a6ae9
MK
1209\r
1210/**\r
ba1a2d11
ED
1211 Core. Capability Reporting Register of VM-Function Controls (R/O) See Table\r
1212 2-2.\r
053a6ae9
MK
1213\r
1214 @param ECX MSR_SILVERMONT_IA32_VMX_FMFUNC (0x00000491)\r
1215 @param EAX Lower 32-bits of MSR value.\r
1216 @param EDX Upper 32-bits of MSR value.\r
1217\r
1218 <b>Example usage</b>\r
1219 @code\r
1220 UINT64 Msr;\r
1221\r
1222 Msr = AsmReadMsr64 (MSR_SILVERMONT_IA32_VMX_FMFUNC);\r
1223 @endcode\r
94fe1b5f 1224 @note MSR_SILVERMONT_IA32_VMX_FMFUNC is defined as IA32_VMX_FMFUNC in SDM.\r
053a6ae9 1225**/\r
2f88bd3a 1226#define MSR_SILVERMONT_IA32_VMX_FMFUNC 0x00000491\r
053a6ae9
MK
1227\r
1228/**\r
1229 Core. Note: C-state values are processor specific C-state code names,\r
1230 unrelated to MWAIT extension C-state parameters or ACPI CStates. CORE C1\r
1231 Residency Counter. (R/O) Value since last reset that this core is in\r
1232 processor-specific C1 states. Counts at the TSC frequency.\r
1233\r
1234 @param ECX MSR_SILVERMONT_CORE_C1_RESIDENCY (0x00000660)\r
1235 @param EAX Lower 32-bits of MSR value.\r
1236 @param EDX Upper 32-bits of MSR value.\r
1237\r
1238 <b>Example usage</b>\r
1239 @code\r
1240 UINT64 Msr;\r
1241\r
1242 Msr = AsmReadMsr64 (MSR_SILVERMONT_CORE_C1_RESIDENCY);\r
1243 AsmWriteMsr64 (MSR_SILVERMONT_CORE_C1_RESIDENCY, Msr);\r
1244 @endcode\r
94fe1b5f 1245 @note MSR_SILVERMONT_CORE_C1_RESIDENCY is defined as MSR_CORE_C1_RESIDENCY in SDM.\r
053a6ae9 1246**/\r
2f88bd3a 1247#define MSR_SILVERMONT_CORE_C1_RESIDENCY 0x00000660\r
053a6ae9
MK
1248\r
1249/**\r
1250 Package. Unit Multipliers used in RAPL Interfaces (R/O) See Section 14.9.1,\r
1251 "RAPL Interfaces.".\r
1252\r
1253 @param ECX MSR_SILVERMONT_RAPL_POWER_UNIT (0x00000606)\r
1254 @param EAX Lower 32-bits of MSR value.\r
1255 Described by the type MSR_SILVERMONT_RAPL_POWER_UNIT_REGISTER.\r
1256 @param EDX Upper 32-bits of MSR value.\r
1257 Described by the type MSR_SILVERMONT_RAPL_POWER_UNIT_REGISTER.\r
1258\r
1259 <b>Example usage</b>\r
1260 @code\r
1261 MSR_SILVERMONT_RAPL_POWER_UNIT_REGISTER Msr;\r
1262\r
1263 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_RAPL_POWER_UNIT);\r
1264 @endcode\r
94fe1b5f 1265 @note MSR_SILVERMONT_RAPL_POWER_UNIT is defined as MSR_RAPL_POWER_UNIT in SDM.\r
053a6ae9 1266**/\r
2f88bd3a 1267#define MSR_SILVERMONT_RAPL_POWER_UNIT 0x00000606\r
053a6ae9
MK
1268\r
1269/**\r
1270 MSR information returned for MSR index #MSR_SILVERMONT_RAPL_POWER_UNIT\r
1271**/\r
1272typedef union {\r
1273 ///\r
1274 /// Individual bit fields\r
1275 ///\r
1276 struct {\r
1277 ///\r
1278 /// [Bits 3:0] Power Units. Power related information (in milliWatts) is\r
1279 /// based on the multiplier, 2^PU; where PU is an unsigned integer\r
1280 /// represented by bits 3:0. Default value is 0101b, indicating power unit\r
1281 /// is in 32 milliWatts increment.\r
1282 ///\r
2f88bd3a
MK
1283 UINT32 PowerUnits : 4;\r
1284 UINT32 Reserved1 : 4;\r
053a6ae9
MK
1285 ///\r
1286 /// [Bits 12:8] Energy Status Units. Energy related information (in\r
1287 /// microJoules) is based on the multiplier, 2^ESU; where ESU is an\r
1288 /// unsigned integer represented by bits 12:8. Default value is 00101b,\r
1289 /// indicating energy unit is in 32 microJoules increment.\r
1290 ///\r
2f88bd3a
MK
1291 UINT32 EnergyStatusUnits : 5;\r
1292 UINT32 Reserved2 : 3;\r
053a6ae9
MK
1293 ///\r
1294 /// [Bits 19:16] Time Unit. The value is 0000b, indicating time unit is in\r
1295 /// one second.\r
1296 ///\r
2f88bd3a
MK
1297 UINT32 TimeUnits : 4;\r
1298 UINT32 Reserved3 : 12;\r
1299 UINT32 Reserved4 : 32;\r
053a6ae9
MK
1300 } Bits;\r
1301 ///\r
1302 /// All bit fields as a 32-bit value\r
1303 ///\r
2f88bd3a 1304 UINT32 Uint32;\r
053a6ae9
MK
1305 ///\r
1306 /// All bit fields as a 64-bit value\r
1307 ///\r
2f88bd3a 1308 UINT64 Uint64;\r
053a6ae9
MK
1309} MSR_SILVERMONT_RAPL_POWER_UNIT_REGISTER;\r
1310\r
053a6ae9
MK
1311/**\r
1312 Package. PKG RAPL Power Limit Control (R/W).\r
1313\r
1314 @param ECX MSR_SILVERMONT_PKG_POWER_LIMIT (0x00000610)\r
1315 @param EAX Lower 32-bits of MSR value.\r
1316 Described by the type MSR_SILVERMONT_PKG_POWER_LIMIT_REGISTER.\r
1317 @param EDX Upper 32-bits of MSR value.\r
1318 Described by the type MSR_SILVERMONT_PKG_POWER_LIMIT_REGISTER.\r
1319\r
1320 <b>Example usage</b>\r
1321 @code\r
1322 MSR_SILVERMONT_PKG_POWER_LIMIT_REGISTER Msr;\r
1323\r
1324 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PKG_POWER_LIMIT);\r
1325 AsmWriteMsr64 (MSR_SILVERMONT_PKG_POWER_LIMIT, Msr.Uint64);\r
1326 @endcode\r
94fe1b5f 1327 @note MSR_SILVERMONT_PKG_POWER_LIMIT is defined as MSR_PKG_POWER_LIMIT in SDM.\r
053a6ae9 1328**/\r
2f88bd3a 1329#define MSR_SILVERMONT_PKG_POWER_LIMIT 0x00000610\r
053a6ae9
MK
1330\r
1331/**\r
1332 MSR information returned for MSR index #MSR_SILVERMONT_PKG_POWER_LIMIT\r
1333**/\r
1334typedef union {\r
1335 ///\r
1336 /// Individual bit fields\r
1337 ///\r
1338 struct {\r
1339 ///\r
ba1a2d11
ED
1340 /// [Bits 14:0] Package Power Limit #1 (R/W) See Section 14.9.3, "Package\r
1341 /// RAPL Domain." and MSR_RAPL_POWER_UNIT in Table 2-8.\r
053a6ae9 1342 ///\r
2f88bd3a 1343 UINT32 Limit : 15;\r
053a6ae9
MK
1344 ///\r
1345 /// [Bit 15] Enable Power Limit #1. (R/W) See Section 14.9.3, "Package\r
1346 /// RAPL Domain.".\r
1347 ///\r
2f88bd3a 1348 UINT32 Enable : 1;\r
053a6ae9
MK
1349 ///\r
1350 /// [Bit 16] Package Clamping Limitation #1. (R/W) See Section 14.9.3,\r
1351 /// "Package RAPL Domain.".\r
1352 ///\r
2f88bd3a 1353 UINT32 ClampingLimit : 1;\r
053a6ae9
MK
1354 ///\r
1355 /// [Bits 23:17] Time Window for Power Limit #1. (R/W) in unit of second.\r
1356 /// If 0 is specified in bits [23:17], defaults to 1 second window.\r
1357 ///\r
2f88bd3a
MK
1358 UINT32 Time : 7;\r
1359 UINT32 Reserved1 : 8;\r
1360 UINT32 Reserved2 : 32;\r
053a6ae9
MK
1361 } Bits;\r
1362 ///\r
1363 /// All bit fields as a 32-bit value\r
1364 ///\r
2f88bd3a 1365 UINT32 Uint32;\r
053a6ae9
MK
1366 ///\r
1367 /// All bit fields as a 64-bit value\r
1368 ///\r
2f88bd3a 1369 UINT64 Uint64;\r
053a6ae9
MK
1370} MSR_SILVERMONT_PKG_POWER_LIMIT_REGISTER;\r
1371\r
053a6ae9
MK
1372/**\r
1373 Package. PKG Energy Status (R/O) See Section 14.9.3, "Package RAPL Domain."\r
ba1a2d11 1374 and MSR_RAPL_POWER_UNIT in Table 2-8.\r
053a6ae9
MK
1375\r
1376 @param ECX MSR_SILVERMONT_PKG_ENERGY_STATUS (0x00000611)\r
1377 @param EAX Lower 32-bits of MSR value.\r
1378 @param EDX Upper 32-bits of MSR value.\r
1379\r
1380 <b>Example usage</b>\r
1381 @code\r
1382 UINT64 Msr;\r
1383\r
1384 Msr = AsmReadMsr64 (MSR_SILVERMONT_PKG_ENERGY_STATUS);\r
1385 @endcode\r
94fe1b5f 1386 @note MSR_SILVERMONT_PKG_ENERGY_STATUS is defined as MSR_PKG_ENERGY_STATUS in SDM.\r
053a6ae9 1387**/\r
2f88bd3a 1388#define MSR_SILVERMONT_PKG_ENERGY_STATUS 0x00000611\r
053a6ae9
MK
1389\r
1390/**\r
ba1a2d11
ED
1391 Package. PP0 Energy Status (R/O) See Section 14.9.4, "PP0/PP1 RAPL Domains."\r
1392 and MSR_RAPL_POWER_UNIT in Table 2-8.\r
053a6ae9
MK
1393\r
1394 @param ECX MSR_SILVERMONT_PP0_ENERGY_STATUS (0x00000639)\r
1395 @param EAX Lower 32-bits of MSR value.\r
1396 @param EDX Upper 32-bits of MSR value.\r
1397\r
1398 <b>Example usage</b>\r
1399 @code\r
1400 UINT64 Msr;\r
1401\r
1402 Msr = AsmReadMsr64 (MSR_SILVERMONT_PP0_ENERGY_STATUS);\r
1403 @endcode\r
94fe1b5f 1404 @note MSR_SILVERMONT_PP0_ENERGY_STATUS is defined as MSR_PP0_ENERGY_STATUS in SDM.\r
053a6ae9 1405**/\r
2f88bd3a 1406#define MSR_SILVERMONT_PP0_ENERGY_STATUS 0x00000639\r
053a6ae9
MK
1407\r
1408/**\r
1409 Package. Core C6 demotion policy config MSR. Controls per-core C6 demotion\r
1410 policy. Writing a value of 0 disables core level HW demotion policy.\r
1411\r
1412 @param ECX MSR_SILVERMONT_CC6_DEMOTION_POLICY_CONFIG (0x00000668)\r
1413 @param EAX Lower 32-bits of MSR value.\r
1414 @param EDX Upper 32-bits of MSR value.\r
1415\r
1416 <b>Example usage</b>\r
1417 @code\r
1418 UINT64 Msr;\r
1419\r
1420 Msr = AsmReadMsr64 (MSR_SILVERMONT_CC6_DEMOTION_POLICY_CONFIG);\r
1421 AsmWriteMsr64 (MSR_SILVERMONT_CC6_DEMOTION_POLICY_CONFIG, Msr);\r
1422 @endcode\r
94fe1b5f 1423 @note MSR_SILVERMONT_CC6_DEMOTION_POLICY_CONFIG is defined as MSR_CC6_DEMOTION_POLICY_CONFIG in SDM.\r
053a6ae9 1424**/\r
2f88bd3a 1425#define MSR_SILVERMONT_CC6_DEMOTION_POLICY_CONFIG 0x00000668\r
053a6ae9
MK
1426\r
1427/**\r
1428 Package. Module C6 demotion policy config MSR. Controls module (i.e. two\r
1429 cores sharing the second-level cache) C6 demotion policy. Writing a value of\r
1430 0 disables module level HW demotion policy.\r
1431\r
1432 @param ECX MSR_SILVERMONT_MC6_DEMOTION_POLICY_CONFIG (0x00000669)\r
1433 @param EAX Lower 32-bits of MSR value.\r
1434 @param EDX Upper 32-bits of MSR value.\r
1435\r
1436 <b>Example usage</b>\r
1437 @code\r
1438 UINT64 Msr;\r
1439\r
1440 Msr = AsmReadMsr64 (MSR_SILVERMONT_MC6_DEMOTION_POLICY_CONFIG);\r
1441 AsmWriteMsr64 (MSR_SILVERMONT_MC6_DEMOTION_POLICY_CONFIG, Msr);\r
1442 @endcode\r
94fe1b5f 1443 @note MSR_SILVERMONT_MC6_DEMOTION_POLICY_CONFIG is defined as MSR_MC6_DEMOTION_POLICY_CONFIG in SDM.\r
053a6ae9 1444**/\r
2f88bd3a 1445#define MSR_SILVERMONT_MC6_DEMOTION_POLICY_CONFIG 0x00000669\r
053a6ae9
MK
1446\r
1447/**\r
1448 Module. Module C6 Residency Counter (R/0) Note: C-state values are processor\r
1449 specific C-state code names, unrelated to MWAIT extension C-state parameters\r
1450 or ACPI CStates. Time that this module is in module-specific C6 states since\r
1451 last reset. Counts at 1 Mhz frequency.\r
1452\r
1453 @param ECX MSR_SILVERMONT_MC6_RESIDENCY_COUNTER (0x00000664)\r
1454 @param EAX Lower 32-bits of MSR value.\r
1455 @param EDX Upper 32-bits of MSR value.\r
1456\r
1457 <b>Example usage</b>\r
1458 @code\r
1459 UINT64 Msr;\r
1460\r
1461 Msr = AsmReadMsr64 (MSR_SILVERMONT_MC6_RESIDENCY_COUNTER);\r
1462 @endcode\r
94fe1b5f 1463 @note MSR_SILVERMONT_MC6_RESIDENCY_COUNTER is defined as MSR_MC6_RESIDENCY_COUNTER in SDM.\r
053a6ae9 1464**/\r
2f88bd3a 1465#define MSR_SILVERMONT_MC6_RESIDENCY_COUNTER 0x00000664\r
053a6ae9
MK
1466\r
1467/**\r
1468 Package. PKG RAPL Parameter (R/0).\r
1469\r
1470 @param ECX MSR_SILVERMONT_PKG_POWER_INFO (0x0000066E)\r
1471 @param EAX Lower 32-bits of MSR value.\r
1472 Described by the type MSR_SILVERMONT_PKG_POWER_INFO_REGISTER.\r
1473 @param EDX Upper 32-bits of MSR value.\r
1474 Described by the type MSR_SILVERMONT_PKG_POWER_INFO_REGISTER.\r
1475\r
1476 <b>Example usage</b>\r
1477 @code\r
1478 MSR_SILVERMONT_PKG_POWER_INFO_REGISTER Msr;\r
1479\r
1480 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PKG_POWER_INFO);\r
1481 @endcode\r
94fe1b5f 1482 @note MSR_SILVERMONT_PKG_POWER_INFO is defined as MSR_PKG_POWER_INFO in SDM.\r
053a6ae9 1483**/\r
2f88bd3a 1484#define MSR_SILVERMONT_PKG_POWER_INFO 0x0000066E\r
053a6ae9
MK
1485\r
1486/**\r
1487 MSR information returned for MSR index #MSR_SILVERMONT_PKG_POWER_INFO\r
1488**/\r
1489typedef union {\r
1490 ///\r
1491 /// Individual bit fields\r
1492 ///\r
1493 struct {\r
1494 ///\r
1495 /// [Bits 14:0] Thermal Spec Power. (R/0) The unsigned integer value is\r
1496 /// the equivalent of thermal specification power of the package domain.\r
1497 /// The unit of this field is specified by the "Power Units" field of\r
1498 /// MSR_RAPL_POWER_UNIT.\r
1499 ///\r
2f88bd3a
MK
1500 UINT32 ThermalSpecPower : 15;\r
1501 UINT32 Reserved1 : 17;\r
1502 UINT32 Reserved2 : 32;\r
053a6ae9
MK
1503 } Bits;\r
1504 ///\r
1505 /// All bit fields as a 32-bit value\r
1506 ///\r
2f88bd3a 1507 UINT32 Uint32;\r
053a6ae9
MK
1508 ///\r
1509 /// All bit fields as a 64-bit value\r
1510 ///\r
2f88bd3a 1511 UINT64 Uint64;\r
053a6ae9
MK
1512} MSR_SILVERMONT_PKG_POWER_INFO_REGISTER;\r
1513\r
053a6ae9
MK
1514/**\r
1515 Package. PP0 RAPL Power Limit Control (R/W).\r
1516\r
1517 @param ECX MSR_SILVERMONT_PP0_POWER_LIMIT (0x00000638)\r
1518 @param EAX Lower 32-bits of MSR value.\r
1519 Described by the type MSR_SILVERMONT_PP0_POWER_LIMIT_REGISTER.\r
1520 @param EDX Upper 32-bits of MSR value.\r
1521 Described by the type MSR_SILVERMONT_PP0_POWER_LIMIT_REGISTER.\r
1522\r
1523 <b>Example usage</b>\r
1524 @code\r
1525 MSR_SILVERMONT_PP0_POWER_LIMIT_REGISTER Msr;\r
1526\r
1527 Msr.Uint64 = AsmReadMsr64 (MSR_SILVERMONT_PP0_POWER_LIMIT);\r
1528 AsmWriteMsr64 (MSR_SILVERMONT_PP0_POWER_LIMIT, Msr.Uint64);\r
1529 @endcode\r
94fe1b5f 1530 @note MSR_SILVERMONT_PP0_POWER_LIMIT is defined as MSR_PP0_POWER_LIMIT in SDM.\r
053a6ae9 1531**/\r
2f88bd3a 1532#define MSR_SILVERMONT_PP0_POWER_LIMIT 0x00000638\r
053a6ae9
MK
1533\r
1534/**\r
1535 MSR information returned for MSR index #MSR_SILVERMONT_PP0_POWER_LIMIT\r
1536**/\r
1537typedef union {\r
1538 ///\r
1539 /// Individual bit fields\r
1540 ///\r
1541 struct {\r
1542 ///\r
1543 /// [Bits 14:0] PP0 Power Limit #1. (R/W) See Section 14.9.4, "PP0/PP1\r
0f16be6d 1544 /// RAPL Domains." and MSR_RAPL_POWER_UNIT in Table 35-8.\r
053a6ae9 1545 ///\r
2f88bd3a 1546 UINT32 Limit : 15;\r
053a6ae9
MK
1547 ///\r
1548 /// [Bit 15] Enable Power Limit #1. (R/W) See Section 14.9.4, "PP0/PP1\r
1549 /// RAPL Domains.".\r
1550 ///\r
2f88bd3a
MK
1551 UINT32 Enable : 1;\r
1552 UINT32 Reserved1 : 1;\r
053a6ae9
MK
1553 ///\r
1554 /// [Bits 23:17] Time Window for Power Limit #1. (R/W) Specifies the time\r
1555 /// duration over which the average power must remain below\r
1556 /// PP0_POWER_LIMIT #1(14:0). Supported Encodings: 0x0: 1 second time\r
1557 /// duration. 0x1: 5 second time duration (Default). 0x2: 10 second time\r
1558 /// duration. 0x3: 15 second time duration. 0x4: 20 second time duration.\r
1559 /// 0x5: 25 second time duration. 0x6: 30 second time duration. 0x7: 35\r
1560 /// second time duration. 0x8: 40 second time duration. 0x9: 45 second\r
1561 /// time duration. 0xA: 50 second time duration. 0xB-0x7F - reserved.\r
1562 ///\r
2f88bd3a
MK
1563 UINT32 Time : 7;\r
1564 UINT32 Reserved2 : 8;\r
1565 UINT32 Reserved3 : 32;\r
053a6ae9
MK
1566 } Bits;\r
1567 ///\r
1568 /// All bit fields as a 32-bit value\r
1569 ///\r
2f88bd3a 1570 UINT32 Uint32;\r
053a6ae9
MK
1571 ///\r
1572 /// All bit fields as a 64-bit value\r
1573 ///\r
2f88bd3a 1574 UINT64 Uint64;\r
053a6ae9
MK
1575} MSR_SILVERMONT_PP0_POWER_LIMIT_REGISTER;\r
1576\r
1577#endif\r