3 Copyright (c) 2004 - 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
23 #define EFI_CPUID_SIGNATURE 0x0
24 #define EFI_CPUID_VERSION_INFO 0x1
25 #define EFI_CPUID_CACHE_INFO 0x2
26 #define EFI_CPUID_SERIAL_NUMBER 0x3
27 #define EFI_CPUID_EXTENDED_FUNCTION 0x80000000
28 #define EFI_CPUID_EXTENDED_CPU_SIG 0x80000001
29 #define EFI_CPUID_BRAND_STRING1 0x80000002
30 #define EFI_CPUID_BRAND_STRING2 0x80000003
31 #define EFI_CPUID_BRAND_STRING3 0x80000004
34 // CPUID version information masks
35 // Note: leaving masks here is for the compatibility
36 // use EfiCpuVersion (...) instead
38 #define EFI_CPUID_FAMILY 0x0F00
39 #define EFI_CPUID_MODEL 0x00F0
40 #define EFI_CPUID_STEPPING 0x000F
42 #define EFI_CPUID_PENTIUM_M 0x0600
43 #define EFI_CPUID_BANIAS 0x0090
44 #define EFI_CPUID_DOTHAN 0x00D0
45 #define EFI_CPUID_NETBURST 0x0F00
47 #define EFI_MSR_IA32_PLATFORM_ID 0x17
48 #define EFI_MSR_IA32_APIC_BASE 0x1B
49 #define EFI_MSR_EBC_HARD_POWERON 0x2A
50 #define EFI_MSR_EBC_SOFT_POWERON 0x2B
51 #define BINIT_DRIVER_DISABLE 0x40
52 #define INTERNAL_MCERR_DISABLE 0x20
53 #define INITIATOR_MCERR_DISABLE 0x10
54 #define EFI_MSR_EBC_FREQUENCY_ID 0x2C
55 #define EFI_MSR_IA32_BIOS_UPDT_TRIG 0x79
56 #define EFI_MSR_IA32_BIOS_SIGN_ID 0x8B
57 #define EFI_MSR_PSB_CLOCK_STATUS 0xCD
58 #define EFI_APIC_GLOBAL_ENABLE 0x800
59 #define EFI_MSR_IA32_MISC_ENABLE 0x1A0
60 #define LIMIT_CPUID_MAXVAL_ENABLE_BIT 0x00400000
61 #define AUTOMATIC_THERMAL_CONTROL_ENABLE_BIT 0x00000008
62 #define COMPATIBLE_FPU_OPCODE_ENABLE_BIT 0x00000004
63 #define LOGICAL_PROCESSOR_PRIORITY_ENABLE_BIT 0x00000002
64 #define FAST_STRING_ENABLE_BIT 0x00000001
66 #define EFI_CACHE_VARIABLE_MTRR_BASE 0x200
67 #define EFI_CACHE_VARIABLE_MTRR_END 0x20F
68 #define EFI_CACHE_IA32_MTRR_DEF_TYPE 0x2FF
69 #define EFI_CACHE_VALID_ADDRESS 0xFFFFFF000
70 #define EFI_CACHE_MTRR_VALID 0x800
71 #define EFI_CACHE_FIXED_MTRR_VALID 0x400
72 #define EFI_MSR_VALID_MASK 0xFFFFFFFFF
74 #define EFI_IA32_MTRR_FIX64K_00000 0x250
75 #define EFI_IA32_MTRR_FIX16K_80000 0x258
76 #define EFI_IA32_MTRR_FIX16K_A0000 0x259
77 #define EFI_IA32_MTRR_FIX4K_C0000 0x268
78 #define EFI_IA32_MTRR_FIX4K_C8000 0x269
79 #define EFI_IA32_MTRR_FIX4K_D0000 0x26A
80 #define EFI_IA32_MTRR_FIX4K_D8000 0x26B
81 #define EFI_IA32_MTRR_FIX4K_E0000 0x26C
82 #define EFI_IA32_MTRR_FIX4K_E8000 0x26D
83 #define EFI_IA32_MTRR_FIX4K_F0000 0x26E
84 #define EFI_IA32_MTRR_FIX4K_F8000 0x26F
86 #define EFI_IA32_MCG_CAP 0x179
87 #define EFI_IA32_MCG_CTL 0x17B
88 #define EFI_IA32_MC0_CTL 0x400
89 #define EFI_IA32_MC0_STATUS 0x401
91 #define EFI_CACHE_UNCACHEABLE 0
92 #define EFI_CACHE_WRITECOMBINING 1
93 #define EFI_CACHE_WRITETHROUGH 4
94 #define EFI_CACHE_WRITEPROTECTED 5
95 #define EFI_CACHE_WRITEBACK 6
98 // Combine f(FamilyId), m(Model), s(SteppingId) to a single 32 bit number
100 #define EfiMakeCpuVersion(f, m, s) \
101 (((UINT32) (f) << 16) | ((UINT32) (m) << 8) | ((UINT32) (s)))
104 UINT32 HeaderVersion
;
105 UINT32 UpdateRevision
;
109 UINT32 LoaderRevision
;
110 UINT32 ProcessorFlags
;
114 } EFI_CPU_MICROCODE_HEADER
;
121 UINT32 ProcessorFlags
;
123 } EFI_CPU_MICROCODE_EXT_HEADER
;
130 } EFI_CPUID_REGISTER
;
145 Input -The index value to select the register
146 Value -The value to write to the selected register
167 Input: -The index value to select the register
179 OUT EFI_CPUID_REGISTER
*Reg
185 Get the Cpu info by excute the CPUID instruction.
189 RegEax -The input value to put into register EAX
190 Reg -The Output value
201 IN UINT16
*FamilyId
, OPTIONAL
202 IN UINT8
*Model
, OPTIONAL
203 IN UINT8
*SteppingId
, OPTIONAL
204 IN UINT8
*Processor OPTIONAL
209 Extract CPU detail version infomation
212 FamilyId - FamilyId, including ExtendedFamilyId
213 Model - Model, including ExtendedModel
214 SteppingId - SteppingId
215 Processor - Processor
242 IN UINT32 RegisterInEax
,
243 IN UINT32 CacheLevel
,
244 OUT EFI_CPUID_REGISTER
*Regs
248 When RegisterInEax != 4, the functionality is the same as EfiCpuid.
249 When RegisterInEax == 4, the function return the deterministic cache
250 parameters by excuting the CPUID instruction
252 RegisterInEax: - The input value to put into register EAX
253 CacheLevel: - The deterministic cache level
254 Regs: - The Output value