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