]>
Commit | Line | Data |
---|---|---|
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 | |
62 | typedef 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 | |
110 | typedef 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 | |
223 | typedef 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 | |
330 | typedef 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 | |
377 | typedef 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 | |
426 | typedef 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 | |
484 | typedef 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 | |
543 | typedef 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 | |
594 | typedef 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 | |
845 | typedef 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 | |
971 | typedef 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 |