]> git.proxmox.com Git - mirror_edk2.git/blame - UefiCpuPkg/Include/Register/Msr/CoreMsr.h
UefiCpuPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / UefiCpuPkg / Include / Register / Msr / CoreMsr.h
CommitLineData
e0d87abe
MK
1/** @file\r
2 MSR Definitions for Intel Core Solo and Intel Core Duo Processors.\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
ba1a2d11 9 Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>\r
0acd8697 10 SPDX-License-Identifier: BSD-2-Clause-Patent\r
e0d87abe
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
e0d87abe
MK
15\r
16**/\r
17\r
18#ifndef __CORE_MSR_H__\r
19#define __CORE_MSR_H__\r
20\r
21#include <Register/ArchitecturalMsr.h>\r
22\r
f4c982bf
JF
23/**\r
24 Is Intel Core Solo and Intel Core Duo Processors?\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_CORE_PROCESSOR(DisplayFamily, DisplayModel) \\r
33 (DisplayFamily == 0x06 && \\r
34 ( \\r
35 DisplayModel == 0x0E \\r
36 ) \\r
37 )\r
38\r
e0d87abe 39/**\r
ba1a2d11 40 Unique. See Section 2.22, "MSRs in Pentium Processors," and see Table 2-2.\r
e0d87abe
MK
41\r
42 @param ECX MSR_CORE_P5_MC_ADDR (0x00000000)\r
43 @param EAX Lower 32-bits of MSR value.\r
44 @param EDX Upper 32-bits of MSR value.\r
45\r
46 <b>Example usage</b>\r
47 @code\r
48 UINT64 Msr;\r
49\r
50 Msr = AsmReadMsr64 (MSR_CORE_P5_MC_ADDR);\r
51 AsmWriteMsr64 (MSR_CORE_P5_MC_ADDR, Msr);\r
52 @endcode\r
adf10974 53 @note MSR_CORE_P5_MC_ADDR is defined as P5_MC_ADDR in SDM.\r
e0d87abe
MK
54**/\r
55#define MSR_CORE_P5_MC_ADDR 0x00000000\r
56\r
57\r
58/**\r
ba1a2d11 59 Unique. See Section 2.22, "MSRs in Pentium Processors," and see Table 2-2.\r
e0d87abe
MK
60\r
61 @param ECX MSR_CORE_P5_MC_TYPE (0x00000001)\r
62 @param EAX Lower 32-bits of MSR value.\r
63 @param EDX Upper 32-bits of MSR value.\r
64\r
65 <b>Example usage</b>\r
66 @code\r
67 UINT64 Msr;\r
68\r
69 Msr = AsmReadMsr64 (MSR_CORE_P5_MC_TYPE);\r
70 AsmWriteMsr64 (MSR_CORE_P5_MC_TYPE, Msr);\r
71 @endcode\r
adf10974 72 @note MSR_CORE_P5_MC_TYPE is defined as P5_MC_TYPE in SDM.\r
e0d87abe
MK
73**/\r
74#define MSR_CORE_P5_MC_TYPE 0x00000001\r
75\r
76\r
77/**\r
78 Shared. Processor Hard Power-On Configuration (R/W) Enables and disables\r
79 processor features; (R) indicates current processor configuration.\r
80\r
81 @param ECX MSR_CORE_EBL_CR_POWERON (0x0000002A)\r
82 @param EAX Lower 32-bits of MSR value.\r
83 Described by the type MSR_CORE_EBL_CR_POWERON_REGISTER.\r
84 @param EDX Upper 32-bits of MSR value.\r
85 Described by the type MSR_CORE_EBL_CR_POWERON_REGISTER.\r
86\r
87 <b>Example usage</b>\r
88 @code\r
89 MSR_CORE_EBL_CR_POWERON_REGISTER Msr;\r
90\r
91 Msr.Uint64 = AsmReadMsr64 (MSR_CORE_EBL_CR_POWERON);\r
92 AsmWriteMsr64 (MSR_CORE_EBL_CR_POWERON, Msr.Uint64);\r
93 @endcode\r
adf10974 94 @note MSR_CORE_EBL_CR_POWERON is defined as MSR_EBL_CR_POWERON in SDM.\r
e0d87abe
MK
95**/\r
96#define MSR_CORE_EBL_CR_POWERON 0x0000002A\r
97\r
98/**\r
99 MSR information returned for MSR index #MSR_CORE_EBL_CR_POWERON\r
100**/\r
101typedef union {\r
102 ///\r
103 /// Individual bit fields\r
104 ///\r
105 struct {\r
106 UINT32 Reserved1:1;\r
107 ///\r
108 /// [Bit 1] Data Error Checking Enable (R/W) 1 = Enabled; 0 = Disabled\r
109 /// Note: Not all processor implements R/W.\r
110 ///\r
111 UINT32 DataErrorCheckingEnable:1;\r
112 ///\r
113 /// [Bit 2] Response Error Checking Enable (R/W) 1 = Enabled; 0 = Disabled\r
114 /// Note: Not all processor implements R/W.\r
115 ///\r
116 UINT32 ResponseErrorCheckingEnable:1;\r
117 ///\r
118 /// [Bit 3] MCERR# Drive Enable (R/W) 1 = Enabled; 0 = Disabled Note: Not\r
119 /// all processor implements R/W.\r
120 ///\r
121 UINT32 MCERR_DriveEnable:1;\r
122 ///\r
123 /// [Bit 4] Address Parity Enable (R/W) 1 = Enabled; 0 = Disabled Note:\r
124 /// Not all processor implements R/W.\r
125 ///\r
126 UINT32 AddressParityEnable:1;\r
127 UINT32 Reserved2:2;\r
128 ///\r
129 /// [Bit 7] BINIT# Driver Enable (R/W) 1 = Enabled; 0 = Disabled Note: Not\r
130 /// all processor implements R/W.\r
131 ///\r
132 UINT32 BINIT_DriverEnable:1;\r
133 ///\r
134 /// [Bit 8] Output Tri-state Enabled (R/O) 1 = Enabled; 0 = Disabled.\r
135 ///\r
136 UINT32 OutputTriStateEnable:1;\r
137 ///\r
138 /// [Bit 9] Execute BIST (R/O) 1 = Enabled; 0 = Disabled.\r
139 ///\r
140 UINT32 ExecuteBIST:1;\r
141 ///\r
142 /// [Bit 10] MCERR# Observation Enabled (R/O) 1 = Enabled; 0 = Disabled.\r
143 ///\r
144 UINT32 MCERR_ObservationEnabled:1;\r
145 UINT32 Reserved3:1;\r
146 ///\r
147 /// [Bit 12] BINIT# Observation Enabled (R/O) 1 = Enabled; 0 = Disabled.\r
148 ///\r
149 UINT32 BINIT_ObservationEnabled:1;\r
150 UINT32 Reserved4:1;\r
151 ///\r
152 /// [Bit 14] 1 MByte Power on Reset Vector (R/O) 1 = 1 MByte; 0 = 4 GBytes.\r
153 ///\r
154 UINT32 ResetVector:1;\r
155 UINT32 Reserved5:1;\r
156 ///\r
157 /// [Bits 17:16] APIC Cluster ID (R/O).\r
158 ///\r
159 UINT32 APICClusterID:2;\r
160 ///\r
161 /// [Bit 18] System Bus Frequency (R/O) 1. = 100 MHz 2. = Reserved.\r
162 ///\r
163 UINT32 SystemBusFrequency:1;\r
164 UINT32 Reserved6:1;\r
165 ///\r
166 /// [Bits 21:20] Symmetric Arbitration ID (R/O).\r
167 ///\r
168 UINT32 SymmetricArbitrationID:2;\r
169 ///\r
170 /// [Bits 26:22] Clock Frequency Ratio (R/O).\r
171 ///\r
172 UINT32 ClockFrequencyRatio:5;\r
173 UINT32 Reserved7:5;\r
174 UINT32 Reserved8:32;\r
175 } Bits;\r
176 ///\r
177 /// All bit fields as a 32-bit value\r
178 ///\r
179 UINT32 Uint32;\r
180 ///\r
181 /// All bit fields as a 64-bit value\r
182 ///\r
183 UINT64 Uint64;\r
184} MSR_CORE_EBL_CR_POWERON_REGISTER;\r
185\r
186\r
187/**\r
188 Unique. Last Branch Record n (R/W) One of 8 last branch record registers on\r
189 the last branch record stack: bits 31-0 hold the 'from' address and bits\r
190 63-32 hold the 'to' address. See also: - Last Branch Record Stack TOS at\r
ba1a2d11 191 1C9H - Section 17.15, "Last Branch, Interrupt, and Exception Recording\r
e0d87abe
MK
192 (Pentium M Processors).".\r
193\r
194 @param ECX MSR_CORE_LASTBRANCH_n\r
195 @param EAX Lower 32-bits of MSR value.\r
196 @param EDX Upper 32-bits of MSR value.\r
197\r
198 <b>Example usage</b>\r
199 @code\r
200 UINT64 Msr;\r
201\r
202 Msr = AsmReadMsr64 (MSR_CORE_LASTBRANCH_0);\r
203 AsmWriteMsr64 (MSR_CORE_LASTBRANCH_0, Msr);\r
204 @endcode\r
adf10974
JF
205 @note MSR_CORE_LASTBRANCH_0 is defined as MSR_LASTBRANCH_0 in SDM.\r
206 MSR_CORE_LASTBRANCH_1 is defined as MSR_LASTBRANCH_1 in SDM.\r
207 MSR_CORE_LASTBRANCH_2 is defined as MSR_LASTBRANCH_2 in SDM.\r
208 MSR_CORE_LASTBRANCH_3 is defined as MSR_LASTBRANCH_3 in SDM.\r
209 MSR_CORE_LASTBRANCH_4 is defined as MSR_LASTBRANCH_4 in SDM.\r
210 MSR_CORE_LASTBRANCH_5 is defined as MSR_LASTBRANCH_5 in SDM.\r
211 MSR_CORE_LASTBRANCH_6 is defined as MSR_LASTBRANCH_6 in SDM.\r
212 MSR_CORE_LASTBRANCH_7 is defined as MSR_LASTBRANCH_7 in SDM.\r
e0d87abe
MK
213 @{\r
214**/\r
215#define MSR_CORE_LASTBRANCH_0 0x00000040\r
216#define MSR_CORE_LASTBRANCH_1 0x00000041\r
217#define MSR_CORE_LASTBRANCH_2 0x00000042\r
218#define MSR_CORE_LASTBRANCH_3 0x00000043\r
219#define MSR_CORE_LASTBRANCH_4 0x00000044\r
220#define MSR_CORE_LASTBRANCH_5 0x00000045\r
221#define MSR_CORE_LASTBRANCH_6 0x00000046\r
222#define MSR_CORE_LASTBRANCH_7 0x00000047\r
223/// @}\r
224\r
225\r
226/**\r
227 Shared. Scalable Bus Speed (RO) This field indicates the scalable bus\r
228 clock speed:.\r
229\r
230 @param ECX MSR_CORE_FSB_FREQ (0x000000CD)\r
231 @param EAX Lower 32-bits of MSR value.\r
232 Described by the type MSR_CORE_FSB_FREQ_REGISTER.\r
233 @param EDX Upper 32-bits of MSR value.\r
234 Described by the type MSR_CORE_FSB_FREQ_REGISTER.\r
235\r
236 <b>Example usage</b>\r
237 @code\r
238 MSR_CORE_FSB_FREQ_REGISTER Msr;\r
239\r
240 Msr.Uint64 = AsmReadMsr64 (MSR_CORE_FSB_FREQ);\r
241 @endcode\r
adf10974 242 @note MSR_CORE_FSB_FREQ is defined as MSR_FSB_FREQ in SDM.\r
e0d87abe
MK
243**/\r
244#define MSR_CORE_FSB_FREQ 0x000000CD\r
245\r
246/**\r
247 MSR information returned for MSR index #MSR_CORE_FSB_FREQ\r
248**/\r
249typedef union {\r
250 ///\r
251 /// Individual bit fields\r
252 ///\r
253 struct {\r
254 ///\r
255 /// [Bits 2:0] - Scalable Bus Speed\r
256 /// 101B: 100 MHz (FSB 400)\r
257 /// 001B: 133 MHz (FSB 533)\r
258 /// 011B: 167 MHz (FSB 667)\r
259 ///\r
260 /// 133.33 MHz should be utilized if performing calculation with System Bus\r
261 /// Speed when encoding is 101B. 166.67 MHz should be utilized if\r
262 /// performing calculation with System Bus Speed when encoding is 001B.\r
263 ///\r
264 UINT32 ScalableBusSpeed:3;\r
265 UINT32 Reserved1:29;\r
266 UINT32 Reserved2:32;\r
267 } Bits;\r
268 ///\r
269 /// All bit fields as a 32-bit value\r
270 ///\r
271 UINT32 Uint32;\r
272 ///\r
273 /// All bit fields as a 64-bit value\r
274 ///\r
275 UINT64 Uint64;\r
276} MSR_CORE_FSB_FREQ_REGISTER;\r
277\r
278\r
279/**\r
280 Shared.\r
281\r
282 @param ECX MSR_CORE_BBL_CR_CTL3 (0x0000011E)\r
283 @param EAX Lower 32-bits of MSR value.\r
284 Described by the type MSR_CORE_BBL_CR_CTL3_REGISTER.\r
285 @param EDX Upper 32-bits of MSR value.\r
286 Described by the type MSR_CORE_BBL_CR_CTL3_REGISTER.\r
287\r
288 <b>Example usage</b>\r
289 @code\r
290 MSR_CORE_BBL_CR_CTL3_REGISTER Msr;\r
291\r
292 Msr.Uint64 = AsmReadMsr64 (MSR_CORE_BBL_CR_CTL3);\r
293 AsmWriteMsr64 (MSR_CORE_BBL_CR_CTL3, Msr.Uint64);\r
294 @endcode\r
adf10974 295 @note MSR_CORE_BBL_CR_CTL3 is defined as MSR_BBL_CR_CTL3 in SDM.\r
e0d87abe
MK
296**/\r
297#define MSR_CORE_BBL_CR_CTL3 0x0000011E\r
298\r
299/**\r
300 MSR information returned for MSR index #MSR_CORE_BBL_CR_CTL3\r
301**/\r
302typedef union {\r
303 ///\r
304 /// Individual bit fields\r
305 ///\r
306 struct {\r
307 ///\r
308 /// [Bit 0] L2 Hardware Enabled (RO) 1 = If the L2 is hardware-enabled 0 =\r
309 /// Indicates if the L2 is hardware-disabled.\r
310 ///\r
311 UINT32 L2HardwareEnabled:1;\r
312 UINT32 Reserved1:7;\r
313 ///\r
314 /// [Bit 8] L2 Enabled (R/W) 1 = L2 cache has been initialized 0 =\r
315 /// Disabled (default) Until this bit is set the processor will not\r
316 /// respond to the WBINVD instruction or the assertion of the FLUSH# input.\r
317 ///\r
318 UINT32 L2Enabled:1;\r
319 UINT32 Reserved2:14;\r
320 ///\r
321 /// [Bit 23] L2 Not Present (RO) 1. = L2 Present 2. = L2 Not Present.\r
322 ///\r
323 UINT32 L2NotPresent:1;\r
324 UINT32 Reserved3:8;\r
325 UINT32 Reserved4:32;\r
326 } Bits;\r
327 ///\r
328 /// All bit fields as a 32-bit value\r
329 ///\r
330 UINT32 Uint32;\r
331 ///\r
332 /// All bit fields as a 64-bit value\r
333 ///\r
334 UINT64 Uint64;\r
335} MSR_CORE_BBL_CR_CTL3_REGISTER;\r
336\r
337\r
338/**\r
339 Unique.\r
340\r
341 @param ECX MSR_CORE_THERM2_CTL (0x0000019D)\r
342 @param EAX Lower 32-bits of MSR value.\r
343 Described by the type MSR_CORE_THERM2_CTL_REGISTER.\r
344 @param EDX Upper 32-bits of MSR value.\r
345 Described by the type MSR_CORE_THERM2_CTL_REGISTER.\r
346\r
347 <b>Example usage</b>\r
348 @code\r
349 MSR_CORE_THERM2_CTL_REGISTER Msr;\r
350\r
351 Msr.Uint64 = AsmReadMsr64 (MSR_CORE_THERM2_CTL);\r
352 AsmWriteMsr64 (MSR_CORE_THERM2_CTL, Msr.Uint64);\r
353 @endcode\r
adf10974 354 @note MSR_CORE_THERM2_CTL is defined as MSR_THERM2_CTL in SDM.\r
e0d87abe
MK
355**/\r
356#define MSR_CORE_THERM2_CTL 0x0000019D\r
357\r
358/**\r
359 MSR information returned for MSR index #MSR_CORE_THERM2_CTL\r
360**/\r
361typedef union {\r
362 ///\r
363 /// Individual bit fields\r
364 ///\r
365 struct {\r
366 UINT32 Reserved1:16;\r
367 ///\r
368 /// [Bit 16] TM_SELECT (R/W) Mode of automatic thermal monitor: 1. =\r
369 /// Thermal Monitor 1 (thermally-initiated on-die modulation of the\r
370 /// stop-clock duty cycle) 2. = Thermal Monitor 2 (thermally-initiated\r
371 /// frequency transitions) If bit 3 of the IA32_MISC_ENABLE register is\r
372 /// cleared, TM_SELECT has no effect. Neither TM1 nor TM2 will be enabled.\r
373 ///\r
374 UINT32 TM_SELECT:1;\r
375 UINT32 Reserved2:15;\r
376 UINT32 Reserved3:32;\r
377 } Bits;\r
378 ///\r
379 /// All bit fields as a 32-bit value\r
380 ///\r
381 UINT32 Uint32;\r
382 ///\r
383 /// All bit fields as a 64-bit value\r
384 ///\r
385 UINT64 Uint64;\r
386} MSR_CORE_THERM2_CTL_REGISTER;\r
387\r
388\r
389/**\r
390 Enable Miscellaneous Processor Features (R/W) Allows a variety of processor\r
391 functions to be enabled and disabled.\r
392\r
393 @param ECX MSR_CORE_IA32_MISC_ENABLE (0x000001A0)\r
394 @param EAX Lower 32-bits of MSR value.\r
395 Described by the type MSR_CORE_IA32_MISC_ENABLE_REGISTER.\r
396 @param EDX Upper 32-bits of MSR value.\r
397 Described by the type MSR_CORE_IA32_MISC_ENABLE_REGISTER.\r
398\r
399 <b>Example usage</b>\r
400 @code\r
401 MSR_CORE_IA32_MISC_ENABLE_REGISTER Msr;\r
402\r
403 Msr.Uint64 = AsmReadMsr64 (MSR_CORE_IA32_MISC_ENABLE);\r
404 AsmWriteMsr64 (MSR_CORE_IA32_MISC_ENABLE, Msr.Uint64);\r
405 @endcode\r
adf10974 406 @note MSR_CORE_IA32_MISC_ENABLE is defined as IA32_MISC_ENABLE in SDM.\r
e0d87abe
MK
407**/\r
408#define MSR_CORE_IA32_MISC_ENABLE 0x000001A0\r
409\r
410/**\r
411 MSR information returned for MSR index #MSR_CORE_IA32_MISC_ENABLE\r
412**/\r
413typedef union {\r
414 ///\r
415 /// Individual bit fields\r
416 ///\r
417 struct {\r
418 UINT32 Reserved1:3;\r
419 ///\r
420 /// [Bit 3] Unique. Automatic Thermal Control Circuit Enable (R/W) See\r
ba1a2d11 421 /// Table 2-2.\r
e0d87abe
MK
422 ///\r
423 UINT32 AutomaticThermalControlCircuit:1;\r
424 UINT32 Reserved2:3;\r
425 ///\r
ba1a2d11 426 /// [Bit 7] Shared. Performance Monitoring Available (R) See Table 2-2.\r
e0d87abe
MK
427 ///\r
428 UINT32 PerformanceMonitoring:1;\r
429 UINT32 Reserved3:2;\r
430 ///\r
431 /// [Bit 10] Shared. FERR# Multiplexing Enable (R/W) 1 = FERR# asserted by\r
432 /// the processor to indicate a pending break event within the processor 0\r
433 /// = Indicates compatible FERR# signaling behavior This bit must be set\r
434 /// to 1 to support XAPIC interrupt model usage.\r
435 ///\r
436 UINT32 FERR:1;\r
437 ///\r
ba1a2d11 438 /// [Bit 11] Shared. Branch Trace Storage Unavailable (RO) See Table 2-2.\r
e0d87abe
MK
439 ///\r
440 UINT32 BTS:1;\r
441 UINT32 Reserved4:1;\r
442 ///\r
443 /// [Bit 13] Shared. TM2 Enable (R/W) When this bit is set (1) and the\r
444 /// thermal sensor indicates that the die temperature is at the\r
445 /// pre-determined threshold, the Thermal Monitor 2 mechanism is engaged.\r
446 /// TM2 will reduce the bus to core ratio and voltage according to the\r
0f16be6d
HW
447 /// value last written to MSR_THERM2_CTL bits 15:0. When this bit is clear\r
448 /// (0, default), the processor does not change the VID signals or the bus\r
449 /// to core ratio when the processor enters a thermal managed state. If\r
450 /// the TM2 feature flag (ECX[8]) is not set to 1 after executing CPUID\r
451 /// with EAX = 1, then this feature is not supported and BIOS must not\r
452 /// alter the contents of this bit location. The processor is operating\r
453 /// out of spec if both this bit and the TM1 bit are set to disabled\r
454 /// states.\r
e0d87abe
MK
455 ///\r
456 UINT32 TM2:1;\r
457 UINT32 Reserved5:2;\r
458 ///\r
459 /// [Bit 16] Shared. Enhanced Intel SpeedStep Technology Enable (R/W) 1 =\r
460 /// Enhanced Intel SpeedStep Technology enabled.\r
461 ///\r
462 UINT32 EIST:1;\r
463 UINT32 Reserved6:1;\r
464 ///\r
ba1a2d11 465 /// [Bit 18] Shared. ENABLE MONITOR FSM (R/W) See Table 2-2.\r
e0d87abe
MK
466 ///\r
467 UINT32 MONITOR:1;\r
468 UINT32 Reserved7:1;\r
469 UINT32 Reserved8:2;\r
470 ///\r
ba1a2d11 471 /// [Bit 22] Shared. Limit CPUID Maxval (R/W) See Table 2-2. Setting this\r
e0d87abe 472 /// bit may cause behavior in software that depends on the availability of\r
0f16be6d 473 /// CPUID leaves greater than 2.\r
e0d87abe
MK
474 ///\r
475 UINT32 LimitCpuidMaxval:1;\r
476 UINT32 Reserved9:9;\r
477 UINT32 Reserved10:2;\r
478 ///\r
ba1a2d11 479 /// [Bit 34] Shared. XD Bit Disable (R/W) See Table 2-2.\r
e0d87abe
MK
480 ///\r
481 UINT32 XD:1;\r
482 UINT32 Reserved11:29;\r
483 } Bits;\r
484 ///\r
485 /// All bit fields as a 64-bit value\r
486 ///\r
487 UINT64 Uint64;\r
488} MSR_CORE_IA32_MISC_ENABLE_REGISTER;\r
489\r
490\r
491/**\r
492 Unique. Last Branch Record Stack TOS (R/W) Contains an index (bits 0-3)\r
493 that points to the MSR containing the most recent branch record. See\r
494 MSR_LASTBRANCH_0_FROM_IP (at 40H).\r
495\r
496 @param ECX MSR_CORE_LASTBRANCH_TOS (0x000001C9)\r
497 @param EAX Lower 32-bits of MSR value.\r
498 @param EDX Upper 32-bits of MSR value.\r
499\r
500 <b>Example usage</b>\r
501 @code\r
502 UINT64 Msr;\r
503\r
504 Msr = AsmReadMsr64 (MSR_CORE_LASTBRANCH_TOS);\r
505 AsmWriteMsr64 (MSR_CORE_LASTBRANCH_TOS, Msr);\r
506 @endcode\r
adf10974 507 @note MSR_CORE_LASTBRANCH_TOS is defined as MSR_LASTBRANCH_TOS in SDM.\r
e0d87abe
MK
508**/\r
509#define MSR_CORE_LASTBRANCH_TOS 0x000001C9\r
510\r
511\r
512/**\r
513 Unique. Last Exception Record From Linear IP (R) Contains a pointer to the\r
514 last branch instruction that the processor executed prior to the last\r
515 exception that was generated or the last interrupt that was handled.\r
516\r
517 @param ECX MSR_CORE_LER_FROM_LIP (0x000001DD)\r
518 @param EAX Lower 32-bits of MSR value.\r
519 @param EDX Upper 32-bits of MSR value.\r
520\r
521 <b>Example usage</b>\r
522 @code\r
523 UINT64 Msr;\r
524\r
525 Msr = AsmReadMsr64 (MSR_CORE_LER_FROM_LIP);\r
526 @endcode\r
adf10974 527 @note MSR_CORE_LER_FROM_LIP is defined as MSR_LER_FROM_LIP in SDM.\r
e0d87abe
MK
528**/\r
529#define MSR_CORE_LER_FROM_LIP 0x000001DD\r
530\r
531\r
532/**\r
533 Unique. Last Exception Record To Linear IP (R) This area contains a pointer\r
534 to the target of the last branch instruction that the processor executed\r
535 prior to the last exception that was generated or the last interrupt that\r
536 was handled.\r
537\r
538 @param ECX MSR_CORE_LER_TO_LIP (0x000001DE)\r
539 @param EAX Lower 32-bits of MSR value.\r
540 @param EDX Upper 32-bits of MSR value.\r
541\r
542 <b>Example usage</b>\r
543 @code\r
544 UINT64 Msr;\r
545\r
546 Msr = AsmReadMsr64 (MSR_CORE_LER_TO_LIP);\r
547 @endcode\r
adf10974 548 @note MSR_CORE_LER_TO_LIP is defined as MSR_LER_TO_LIP in SDM.\r
e0d87abe
MK
549**/\r
550#define MSR_CORE_LER_TO_LIP 0x000001DE\r
551\r
e0d87abe
MK
552/**\r
553 Unique.\r
554\r
555 @param ECX MSR_CORE_MTRRPHYSBASEn\r
556 @param EAX Lower 32-bits of MSR value.\r
557 @param EDX Upper 32-bits of MSR value.\r
558\r
559 <b>Example usage</b>\r
560 @code\r
561 UINT64 Msr;\r
562\r
563 Msr = AsmReadMsr64 (MSR_CORE_MTRRPHYSBASE0);\r
564 AsmWriteMsr64 (MSR_CORE_MTRRPHYSBASE0, Msr);\r
565 @endcode\r
adf10974
JF
566 @note MSR_CORE_MTRRPHYSBASE0 is defined as MTRRPHYSBASE0 in SDM.\r
567 MSR_CORE_MTRRPHYSBASE1 is defined as MTRRPHYSBASE1 in SDM.\r
568 MSR_CORE_MTRRPHYSBASE2 is defined as MTRRPHYSBASE2 in SDM.\r
569 MSR_CORE_MTRRPHYSBASE3 is defined as MTRRPHYSBASE3 in SDM.\r
570 MSR_CORE_MTRRPHYSBASE4 is defined as MTRRPHYSBASE4 in SDM.\r
571 MSR_CORE_MTRRPHYSBASE5 is defined as MTRRPHYSBASE5 in SDM.\r
572 MSR_CORE_MTRRPHYSMASK6 is defined as MTRRPHYSMASK6 in SDM.\r
573 MSR_CORE_MTRRPHYSMASK7 is defined as MTRRPHYSMASK7 in SDM.\r
e0d87abe
MK
574 @{\r
575**/\r
576#define MSR_CORE_MTRRPHYSBASE0 0x00000200\r
577#define MSR_CORE_MTRRPHYSBASE1 0x00000202\r
578#define MSR_CORE_MTRRPHYSBASE2 0x00000204\r
579#define MSR_CORE_MTRRPHYSBASE3 0x00000206\r
580#define MSR_CORE_MTRRPHYSBASE4 0x00000208\r
581#define MSR_CORE_MTRRPHYSBASE5 0x0000020A\r
582#define MSR_CORE_MTRRPHYSMASK6 0x0000020D\r
583#define MSR_CORE_MTRRPHYSMASK7 0x0000020F\r
584/// @}\r
585\r
586\r
587/**\r
588 Unique.\r
589\r
590 @param ECX MSR_CORE_MTRRPHYSMASKn (0x00000201)\r
591 @param EAX Lower 32-bits of MSR value.\r
592 @param EDX Upper 32-bits of MSR value.\r
593\r
594 <b>Example usage</b>\r
595 @code\r
596 UINT64 Msr;\r
597\r
598 Msr = AsmReadMsr64 (MSR_CORE_MTRRPHYSMASK0);\r
599 AsmWriteMsr64 (MSR_CORE_MTRRPHYSMASK0, Msr);\r
600 @endcode\r
adf10974
JF
601 @note MSR_CORE_MTRRPHYSMASK0 is defined as MTRRPHYSMASK0 in SDM.\r
602 MSR_CORE_MTRRPHYSMASK1 is defined as MTRRPHYSMASK1 in SDM.\r
603 MSR_CORE_MTRRPHYSMASK2 is defined as MTRRPHYSMASK2 in SDM.\r
604 MSR_CORE_MTRRPHYSMASK3 is defined as MTRRPHYSMASK3 in SDM.\r
605 MSR_CORE_MTRRPHYSMASK4 is defined as MTRRPHYSMASK4 in SDM.\r
606 MSR_CORE_MTRRPHYSMASK5 is defined as MTRRPHYSMASK5 in SDM.\r
607 MSR_CORE_MTRRPHYSBASE6 is defined as MTRRPHYSBASE6 in SDM.\r
608 MSR_CORE_MTRRPHYSBASE7 is defined as MTRRPHYSBASE7 in SDM.\r
e0d87abe
MK
609 @{\r
610**/\r
611#define MSR_CORE_MTRRPHYSMASK0 0x00000201\r
612#define MSR_CORE_MTRRPHYSMASK1 0x00000203\r
613#define MSR_CORE_MTRRPHYSMASK2 0x00000205\r
614#define MSR_CORE_MTRRPHYSMASK3 0x00000207\r
615#define MSR_CORE_MTRRPHYSMASK4 0x00000209\r
616#define MSR_CORE_MTRRPHYSMASK5 0x0000020B\r
617#define MSR_CORE_MTRRPHYSBASE6 0x0000020C\r
618#define MSR_CORE_MTRRPHYSBASE7 0x0000020E\r
619/// @}\r
620\r
621\r
622/**\r
623 Unique.\r
624\r
625 @param ECX MSR_CORE_MTRRFIX64K_00000 (0x00000250)\r
626 @param EAX Lower 32-bits of MSR value.\r
627 @param EDX Upper 32-bits of MSR value.\r
628\r
629 <b>Example usage</b>\r
630 @code\r
631 UINT64 Msr;\r
632\r
633 Msr = AsmReadMsr64 (MSR_CORE_MTRRFIX64K_00000);\r
634 AsmWriteMsr64 (MSR_CORE_MTRRFIX64K_00000, Msr);\r
635 @endcode\r
adf10974 636 @note MSR_CORE_MTRRFIX64K_00000 is defined as MTRRFIX64K_00000 in SDM.\r
e0d87abe
MK
637**/\r
638#define MSR_CORE_MTRRFIX64K_00000 0x00000250\r
639\r
640\r
641/**\r
642 Unique.\r
643\r
644 @param ECX MSR_CORE_MTRRFIX16K_80000 (0x00000258)\r
645 @param EAX Lower 32-bits of MSR value.\r
646 @param EDX Upper 32-bits of MSR value.\r
647\r
648 <b>Example usage</b>\r
649 @code\r
650 UINT64 Msr;\r
651\r
652 Msr = AsmReadMsr64 (MSR_CORE_MTRRFIX16K_80000);\r
653 AsmWriteMsr64 (MSR_CORE_MTRRFIX16K_80000, Msr);\r
654 @endcode\r
adf10974 655 @note MSR_CORE_MTRRFIX16K_80000 is defined as MTRRFIX16K_80000 in SDM.\r
e0d87abe
MK
656**/\r
657#define MSR_CORE_MTRRFIX16K_80000 0x00000258\r
658\r
659\r
660/**\r
661 Unique.\r
662\r
663 @param ECX MSR_CORE_MTRRFIX16K_A0000 (0x00000259)\r
664 @param EAX Lower 32-bits of MSR value.\r
665 @param EDX Upper 32-bits of MSR value.\r
666\r
667 <b>Example usage</b>\r
668 @code\r
669 UINT64 Msr;\r
670\r
671 Msr = AsmReadMsr64 (MSR_CORE_MTRRFIX16K_A0000);\r
672 AsmWriteMsr64 (MSR_CORE_MTRRFIX16K_A0000, Msr);\r
673 @endcode\r
adf10974 674 @note MSR_CORE_MTRRFIX16K_A0000 is defined as MTRRFIX16K_A0000 in SDM.\r
e0d87abe
MK
675**/\r
676#define MSR_CORE_MTRRFIX16K_A0000 0x00000259\r
677\r
678\r
679/**\r
680 Unique.\r
681\r
682 @param ECX MSR_CORE_MTRRFIX4K_C0000 (0x00000268)\r
683 @param EAX Lower 32-bits of MSR value.\r
684 @param EDX Upper 32-bits of MSR value.\r
685\r
686 <b>Example usage</b>\r
687 @code\r
688 UINT64 Msr;\r
689\r
690 Msr = AsmReadMsr64 (MSR_CORE_MTRRFIX4K_C0000);\r
691 AsmWriteMsr64 (MSR_CORE_MTRRFIX4K_C0000, Msr);\r
692 @endcode\r
adf10974 693 @note MSR_CORE_MTRRFIX4K_C0000 is defined as MTRRFIX4K_C0000 in SDM.\r
e0d87abe
MK
694**/\r
695#define MSR_CORE_MTRRFIX4K_C0000 0x00000268\r
696\r
697\r
698/**\r
699 Unique.\r
700\r
701 @param ECX MSR_CORE_MTRRFIX4K_C8000 (0x00000269)\r
702 @param EAX Lower 32-bits of MSR value.\r
703 @param EDX Upper 32-bits of MSR value.\r
704\r
705 <b>Example usage</b>\r
706 @code\r
707 UINT64 Msr;\r
708\r
709 Msr = AsmReadMsr64 (MSR_CORE_MTRRFIX4K_C8000);\r
710 AsmWriteMsr64 (MSR_CORE_MTRRFIX4K_C8000, Msr);\r
711 @endcode\r
adf10974 712 @note MSR_CORE_MTRRFIX4K_C8000 is defined as MTRRFIX4K_C8000 in SDM.\r
e0d87abe
MK
713**/\r
714#define MSR_CORE_MTRRFIX4K_C8000 0x00000269\r
715\r
716\r
717/**\r
718 Unique.\r
719\r
720 @param ECX MSR_CORE_MTRRFIX4K_D0000 (0x0000026A)\r
721 @param EAX Lower 32-bits of MSR value.\r
722 @param EDX Upper 32-bits of MSR value.\r
723\r
724 <b>Example usage</b>\r
725 @code\r
726 UINT64 Msr;\r
727\r
728 Msr = AsmReadMsr64 (MSR_CORE_MTRRFIX4K_D0000);\r
729 AsmWriteMsr64 (MSR_CORE_MTRRFIX4K_D0000, Msr);\r
730 @endcode\r
adf10974 731 @note MSR_CORE_MTRRFIX4K_D0000 is defined as MTRRFIX4K_D0000 in SDM.\r
e0d87abe
MK
732**/\r
733#define MSR_CORE_MTRRFIX4K_D0000 0x0000026A\r
734\r
735\r
736/**\r
737 Unique.\r
738\r
739 @param ECX MSR_CORE_MTRRFIX4K_D8000 (0x0000026B)\r
740 @param EAX Lower 32-bits of MSR value.\r
741 @param EDX Upper 32-bits of MSR value.\r
742\r
743 <b>Example usage</b>\r
744 @code\r
745 UINT64 Msr;\r
746\r
747 Msr = AsmReadMsr64 (MSR_CORE_MTRRFIX4K_D8000);\r
748 AsmWriteMsr64 (MSR_CORE_MTRRFIX4K_D8000, Msr);\r
749 @endcode\r
adf10974 750 @note MSR_CORE_MTRRFIX4K_D8000 is defined as MTRRFIX4K_D8000 in SDM.\r
e0d87abe
MK
751**/\r
752#define MSR_CORE_MTRRFIX4K_D8000 0x0000026B\r
753\r
754\r
755/**\r
756 Unique.\r
757\r
758 @param ECX MSR_CORE_MTRRFIX4K_E0000 (0x0000026C)\r
759 @param EAX Lower 32-bits of MSR value.\r
760 @param EDX Upper 32-bits of MSR value.\r
761\r
762 <b>Example usage</b>\r
763 @code\r
764 UINT64 Msr;\r
765\r
766 Msr = AsmReadMsr64 (MSR_CORE_MTRRFIX4K_E0000);\r
767 AsmWriteMsr64 (MSR_CORE_MTRRFIX4K_E0000, Msr);\r
768 @endcode\r
adf10974 769 @note MSR_CORE_MTRRFIX4K_E0000 is defined as MTRRFIX4K_E0000 in SDM.\r
e0d87abe
MK
770**/\r
771#define MSR_CORE_MTRRFIX4K_E0000 0x0000026C\r
772\r
773\r
774/**\r
775 Unique.\r
776\r
777 @param ECX MSR_CORE_MTRRFIX4K_E8000 (0x0000026D)\r
778 @param EAX Lower 32-bits of MSR value.\r
779 @param EDX Upper 32-bits of MSR value.\r
780\r
781 <b>Example usage</b>\r
782 @code\r
783 UINT64 Msr;\r
784\r
785 Msr = AsmReadMsr64 (MSR_CORE_MTRRFIX4K_E8000);\r
786 AsmWriteMsr64 (MSR_CORE_MTRRFIX4K_E8000, Msr);\r
787 @endcode\r
adf10974 788 @note MSR_CORE_MTRRFIX4K_E8000 is defined as MTRRFIX4K_E8000 in SDM.\r
e0d87abe
MK
789**/\r
790#define MSR_CORE_MTRRFIX4K_E8000 0x0000026D\r
791\r
792\r
793/**\r
794 Unique.\r
795\r
796 @param ECX MSR_CORE_MTRRFIX4K_F0000 (0x0000026E)\r
797 @param EAX Lower 32-bits of MSR value.\r
798 @param EDX Upper 32-bits of MSR value.\r
799\r
800 <b>Example usage</b>\r
801 @code\r
802 UINT64 Msr;\r
803\r
804 Msr = AsmReadMsr64 (MSR_CORE_MTRRFIX4K_F0000);\r
805 AsmWriteMsr64 (MSR_CORE_MTRRFIX4K_F0000, Msr);\r
806 @endcode\r
adf10974 807 @note MSR_CORE_MTRRFIX4K_F0000 is defined as MTRRFIX4K_F0000 in SDM.\r
e0d87abe
MK
808**/\r
809#define MSR_CORE_MTRRFIX4K_F0000 0x0000026E\r
810\r
811\r
812/**\r
813 Unique.\r
814\r
815 @param ECX MSR_CORE_MTRRFIX4K_F8000 (0x0000026F)\r
816 @param EAX Lower 32-bits of MSR value.\r
817 @param EDX Upper 32-bits of MSR value.\r
818\r
819 <b>Example usage</b>\r
820 @code\r
821 UINT64 Msr;\r
822\r
823 Msr = AsmReadMsr64 (MSR_CORE_MTRRFIX4K_F8000);\r
824 AsmWriteMsr64 (MSR_CORE_MTRRFIX4K_F8000, Msr);\r
825 @endcode\r
adf10974 826 @note MSR_CORE_MTRRFIX4K_F8000 is defined as MTRRFIX4K_F8000 in SDM.\r
e0d87abe
MK
827**/\r
828#define MSR_CORE_MTRRFIX4K_F8000 0x0000026F\r
829\r
830\r
831/**\r
832 Unique. See Section 15.3.2.1, "IA32_MCi_CTL MSRs.".\r
833\r
834 @param ECX MSR_CORE_MC4_CTL (0x0000040C)\r
835 @param EAX Lower 32-bits of MSR value.\r
836 @param EDX Upper 32-bits of MSR value.\r
837\r
838 <b>Example usage</b>\r
839 @code\r
840 UINT64 Msr;\r
841\r
842 Msr = AsmReadMsr64 (MSR_CORE_MC4_CTL);\r
843 AsmWriteMsr64 (MSR_CORE_MC4_CTL, Msr);\r
844 @endcode\r
adf10974 845 @note MSR_CORE_MC4_CTL is defined as MSR_MC4_CTL in SDM.\r
e0d87abe
MK
846**/\r
847#define MSR_CORE_MC4_CTL 0x0000040C\r
848\r
849\r
850/**\r
851 Unique. See Section 15.3.2.2, "IA32_MCi_STATUS MSRS.".\r
852\r
853 @param ECX MSR_CORE_MC4_STATUS (0x0000040D)\r
854 @param EAX Lower 32-bits of MSR value.\r
855 @param EDX Upper 32-bits of MSR value.\r
856\r
857 <b>Example usage</b>\r
858 @code\r
859 UINT64 Msr;\r
860\r
861 Msr = AsmReadMsr64 (MSR_CORE_MC4_STATUS);\r
862 AsmWriteMsr64 (MSR_CORE_MC4_STATUS, Msr);\r
863 @endcode\r
adf10974 864 @note MSR_CORE_MC4_STATUS is defined as MSR_MC4_STATUS in SDM.\r
e0d87abe
MK
865**/\r
866#define MSR_CORE_MC4_STATUS 0x0000040D\r
867\r
868\r
869/**\r
870 Unique. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MC4_ADDR\r
871 register is either not implemented or contains no address if the ADDRV flag\r
872 in the MSR_MC4_STATUS register is clear. When not implemented in the\r
873 processor, all reads and writes to this MSR will cause a general-protection\r
874 exception.\r
875\r
876 @param ECX MSR_CORE_MC4_ADDR (0x0000040E)\r
877 @param EAX Lower 32-bits of MSR value.\r
878 @param EDX Upper 32-bits of MSR value.\r
879\r
880 <b>Example usage</b>\r
881 @code\r
882 UINT64 Msr;\r
883\r
884 Msr = AsmReadMsr64 (MSR_CORE_MC4_ADDR);\r
885 AsmWriteMsr64 (MSR_CORE_MC4_ADDR, Msr);\r
886 @endcode\r
adf10974 887 @note MSR_CORE_MC4_ADDR is defined as MSR_MC4_ADDR in SDM.\r
e0d87abe
MK
888**/\r
889#define MSR_CORE_MC4_ADDR 0x0000040E\r
890\r
891\r
e0d87abe
MK
892/**\r
893 Unique. See Section 15.3.2.3, "IA32_MCi_ADDR MSRs." The MSR_MC3_ADDR\r
894 register is either not implemented or contains no address if the ADDRV flag\r
895 in the MSR_MC3_STATUS register is clear. When not implemented in the\r
896 processor, all reads and writes to this MSR will cause a general-protection\r
897 exception.\r
898\r
899 @param ECX MSR_CORE_MC3_ADDR (0x00000412)\r
900 @param EAX Lower 32-bits of MSR value.\r
901 @param EDX Upper 32-bits of MSR value.\r
902\r
903 <b>Example usage</b>\r
904 @code\r
905 UINT64 Msr;\r
906\r
907 Msr = AsmReadMsr64 (MSR_CORE_MC3_ADDR);\r
908 AsmWriteMsr64 (MSR_CORE_MC3_ADDR, Msr);\r
909 @endcode\r
adf10974 910 @note MSR_CORE_MC3_ADDR is defined as MSR_MC3_ADDR in SDM.\r
e0d87abe
MK
911**/\r
912#define MSR_CORE_MC3_ADDR 0x00000412\r
913\r
914\r
915/**\r
916 Unique.\r
917\r
918 @param ECX MSR_CORE_MC3_MISC (0x00000413)\r
919 @param EAX Lower 32-bits of MSR value.\r
920 @param EDX Upper 32-bits of MSR value.\r
921\r
922 <b>Example usage</b>\r
923 @code\r
924 UINT64 Msr;\r
925\r
926 Msr = AsmReadMsr64 (MSR_CORE_MC3_MISC);\r
927 AsmWriteMsr64 (MSR_CORE_MC3_MISC, Msr);\r
928 @endcode\r
adf10974 929 @note MSR_CORE_MC3_MISC is defined as MSR_MC3_MISC in SDM.\r
e0d87abe
MK
930**/\r
931#define MSR_CORE_MC3_MISC 0x00000413\r
932\r
933\r
934/**\r
935 Unique.\r
936\r
937 @param ECX MSR_CORE_MC5_CTL (0x00000414)\r
938 @param EAX Lower 32-bits of MSR value.\r
939 @param EDX Upper 32-bits of MSR value.\r
940\r
941 <b>Example usage</b>\r
942 @code\r
943 UINT64 Msr;\r
944\r
945 Msr = AsmReadMsr64 (MSR_CORE_MC5_CTL);\r
946 AsmWriteMsr64 (MSR_CORE_MC5_CTL, Msr);\r
947 @endcode\r
adf10974 948 @note MSR_CORE_MC5_CTL is defined as MSR_MC5_CTL in SDM.\r
e0d87abe
MK
949**/\r
950#define MSR_CORE_MC5_CTL 0x00000414\r
951\r
952\r
953/**\r
954 Unique.\r
955\r
956 @param ECX MSR_CORE_MC5_STATUS (0x00000415)\r
957 @param EAX Lower 32-bits of MSR value.\r
958 @param EDX Upper 32-bits of MSR value.\r
959\r
960 <b>Example usage</b>\r
961 @code\r
962 UINT64 Msr;\r
963\r
964 Msr = AsmReadMsr64 (MSR_CORE_MC5_STATUS);\r
965 AsmWriteMsr64 (MSR_CORE_MC5_STATUS, Msr);\r
966 @endcode\r
adf10974 967 @note MSR_CORE_MC5_STATUS is defined as MSR_MC5_STATUS in SDM.\r
e0d87abe
MK
968**/\r
969#define MSR_CORE_MC5_STATUS 0x00000415\r
970\r
971\r
972/**\r
973 Unique.\r
974\r
975 @param ECX MSR_CORE_MC5_ADDR (0x00000416)\r
976 @param EAX Lower 32-bits of MSR value.\r
977 @param EDX Upper 32-bits of MSR value.\r
978\r
979 <b>Example usage</b>\r
980 @code\r
981 UINT64 Msr;\r
982\r
983 Msr = AsmReadMsr64 (MSR_CORE_MC5_ADDR);\r
984 AsmWriteMsr64 (MSR_CORE_MC5_ADDR, Msr);\r
985 @endcode\r
adf10974 986 @note MSR_CORE_MC5_ADDR is defined as MSR_MC5_ADDR in SDM.\r
e0d87abe
MK
987**/\r
988#define MSR_CORE_MC5_ADDR 0x00000416\r
989\r
990\r
991/**\r
992 Unique.\r
993\r
994 @param ECX MSR_CORE_MC5_MISC (0x00000417)\r
995 @param EAX Lower 32-bits of MSR value.\r
996 @param EDX Upper 32-bits of MSR value.\r
997\r
998 <b>Example usage</b>\r
999 @code\r
1000 UINT64 Msr;\r
1001\r
1002 Msr = AsmReadMsr64 (MSR_CORE_MC5_MISC);\r
1003 AsmWriteMsr64 (MSR_CORE_MC5_MISC, Msr);\r
1004 @endcode\r
adf10974 1005 @note MSR_CORE_MC5_MISC is defined as MSR_MC5_MISC in SDM.\r
e0d87abe
MK
1006**/\r
1007#define MSR_CORE_MC5_MISC 0x00000417\r
1008\r
1009\r
1010/**\r
ba1a2d11 1011 Unique. See Table 2-2.\r
e0d87abe
MK
1012\r
1013 @param ECX MSR_CORE_IA32_EFER (0xC0000080)\r
1014 @param EAX Lower 32-bits of MSR value.\r
1015 Described by the type MSR_CORE_IA32_EFER_REGISTER.\r
1016 @param EDX Upper 32-bits of MSR value.\r
1017 Described by the type MSR_CORE_IA32_EFER_REGISTER.\r
1018\r
1019 <b>Example usage</b>\r
1020 @code\r
1021 MSR_CORE_IA32_EFER_REGISTER Msr;\r
1022\r
1023 Msr.Uint64 = AsmReadMsr64 (MSR_CORE_IA32_EFER);\r
1024 AsmWriteMsr64 (MSR_CORE_IA32_EFER, Msr.Uint64);\r
1025 @endcode\r
adf10974 1026 @note MSR_CORE_IA32_EFER is defined as IA32_EFER in SDM.\r
e0d87abe
MK
1027**/\r
1028#define MSR_CORE_IA32_EFER 0xC0000080\r
1029\r
1030/**\r
1031 MSR information returned for MSR index #MSR_CORE_IA32_EFER\r
1032**/\r
1033typedef union {\r
1034 ///\r
1035 /// Individual bit fields\r
1036 ///\r
1037 struct {\r
1038 UINT32 Reserved1:11;\r
1039 ///\r
1040 /// [Bit 11] Execute Disable Bit Enable.\r
1041 ///\r
1042 UINT32 NXE:1;\r
1043 UINT32 Reserved2:20;\r
1044 UINT32 Reserved3:32;\r
1045 } Bits;\r
1046 ///\r
1047 /// All bit fields as a 32-bit value\r
1048 ///\r
1049 UINT32 Uint32;\r
1050 ///\r
1051 /// All bit fields as a 64-bit value\r
1052 ///\r
1053 UINT64 Uint64;\r
1054} MSR_CORE_IA32_EFER_REGISTER;\r
1055\r
1056#endif\r