]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Cpu/Pentium/Include/CpuIA32.h
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Cpu / Pentium / Include / CpuIA32.h
1 /*++
2
3 Copyright (c) 2004 - 2006, Intel Corporation. All rights reserved.<BR>
4 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
8
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.
11
12 Module Name:
13
14 CpuIA32.h
15
16 Abstract:
17
18 --*/
19
20 #ifndef _CPU_IA32_H
21 #define _CPU_IA32_H
22
23 #include "Tiano.h"
24
25 typedef struct {
26 UINT32 RegEax;
27 UINT32 RegEbx;
28 UINT32 RegEcx;
29 UINT32 RegEdx;
30 } EFI_CPUID_REGISTER;
31
32 typedef struct {
33 UINT32 HeaderVersion;
34 UINT32 UpdateRevision;
35 UINT32 Date;
36 UINT32 ProcessorId;
37 UINT32 Checksum;
38 UINT32 LoaderRevision;
39 UINT32 ProcessorFlags;
40 UINT32 DataSize;
41 UINT32 TotalSize;
42 UINT8 Reserved[12];
43 } EFI_CPU_MICROCODE_HEADER;
44
45 typedef struct {
46 UINT32 ExtendedSignatureCount;
47 UINT32 ExtendedTableChecksum;
48 UINT8 Reserved[12];
49 } EFI_CPU_MICROCODE_EXTENDED_TABLE_HEADER;
50
51 typedef struct {
52 UINT32 ProcessorSignature;
53 UINT32 ProcessorFlag;
54 UINT32 ProcessorChecksum;
55 } EFI_CPU_MICROCODE_EXTENDED_TABLE;
56
57 typedef struct {
58 UINT32 Stepping : 4;
59 UINT32 Model : 4;
60 UINT32 Family : 4;
61 UINT32 Type : 2;
62 UINT32 Reserved1 : 2;
63 UINT32 ExtendedModel : 4;
64 UINT32 ExtendedFamily : 8;
65 UINT32 Reserved2 : 4;
66 } EFI_CPU_VERSION;
67
68 #define EFI_CPUID_SIGNATURE 0x0
69 #define EFI_CPUID_VERSION_INFO 0x1
70 #define EFI_CPUID_CACHE_INFO 0x2
71 #define EFI_CPUID_SERIAL_NUMBER 0x3
72 #define EFI_CPUID_EXTENDED_FUNCTION 0x80000000
73 #define EFI_CPUID_EXTENDED_CPU_SIG 0x80000001
74 #define EFI_CPUID_BRAND_STRING1 0x80000002
75 #define EFI_CPUID_BRAND_STRING2 0x80000003
76 #define EFI_CPUID_BRAND_STRING3 0x80000004
77
78 #define EFI_MSR_IA32_PLATFORM_ID 0x17
79 #define EFI_MSR_IA32_APIC_BASE 0x1B
80 #define EFI_MSR_EBC_HARD_POWERON 0x2A
81 #define EFI_MSR_EBC_SOFT_POWERON 0x2B
82 #define BINIT_DRIVER_DISABLE 0x40
83 #define INTERNAL_MCERR_DISABLE 0x20
84 #define INITIATOR_MCERR_DISABLE 0x10
85 #define EFI_MSR_EBC_FREQUENCY_ID 0x2C
86 #define EFI_MSR_IA32_BIOS_UPDT_TRIG 0x79
87 #define EFI_MSR_IA32_BIOS_SIGN_ID 0x8B
88 #define EFI_MSR_PSB_CLOCK_STATUS 0xCD
89 #define EFI_APIC_GLOBAL_ENABLE 0x800
90 #define EFI_MSR_IA32_MISC_ENABLE 0x1A0
91 #define LIMIT_CPUID_MAXVAL_ENABLE_BIT 0x00400000
92 #define AUTOMATIC_THERMAL_CONTROL_ENABLE_BIT 0x00000008
93 #define COMPATIBLE_FPU_OPCODE_ENABLE_BIT 0x00000004
94 #define LOGICAL_PROCESSOR_PRIORITY_ENABLE_BIT 0x00000002
95 #define FAST_STRING_ENABLE_BIT 0x00000001
96
97 #define EFI_CACHE_VARIABLE_MTRR_BASE 0x200
98 #define EFI_CACHE_VARIABLE_MTRR_END 0x20F
99 #define EFI_CACHE_IA32_MTRR_DEF_TYPE 0x2FF
100 #define EFI_CACHE_MTRR_VALID 0x800
101 #define EFI_CACHE_FIXED_MTRR_VALID 0x400
102 #define EFI_CACHE_VALID_ADDRESS 0xFFFFFF000
103 #define EFI_MSR_VALID_MASK 0xFFFFFFFFF
104 #define EFI_CACHE_VALID_EXTENDED_ADDRESS 0xFFFFFFFFFF000
105 #define EFI_MSR_VALID_EXTENDED_MASK 0xFFFFFFFFFFFFF
106
107 #define EFI_IA32_MTRR_FIX64K_00000 0x250
108 #define EFI_IA32_MTRR_FIX16K_80000 0x258
109 #define EFI_IA32_MTRR_FIX16K_A0000 0x259
110 #define EFI_IA32_MTRR_FIX4K_C0000 0x268
111 #define EFI_IA32_MTRR_FIX4K_C8000 0x269
112 #define EFI_IA32_MTRR_FIX4K_D0000 0x26A
113 #define EFI_IA32_MTRR_FIX4K_D8000 0x26B
114 #define EFI_IA32_MTRR_FIX4K_E0000 0x26C
115 #define EFI_IA32_MTRR_FIX4K_E8000 0x26D
116 #define EFI_IA32_MTRR_FIX4K_F0000 0x26E
117 #define EFI_IA32_MTRR_FIX4K_F8000 0x26F
118
119 #define EFI_IA32_MCG_CAP 0x179
120 #define EFI_IA32_MCG_CTL 0x17B
121 #define EFI_IA32_MC0_CTL 0x400
122 #define EFI_IA32_MC0_STATUS 0x401
123
124 #define EFI_IA32_PERF_STATUS 0x198
125 #define EFI_IA32_PERF_CTL 0x199
126
127 #define EFI_CACHE_UNCACHEABLE 0
128 #define EFI_CACHE_WRITECOMBINING 1
129 #define EFI_CACHE_WRITETHROUGH 4
130 #define EFI_CACHE_WRITEPROTECTED 5
131 #define EFI_CACHE_WRITEBACK 6
132
133 //
134 // Combine f(FamilyId), m(Model), s(SteppingId) to a single 32 bit number
135 //
136 #define EfiMakeCpuVersion(f, m, s) \
137 (((UINT32) (f) << 16) | ((UINT32) (m) << 8) | ((UINT32) (s)))
138
139 VOID
140 EFIAPI
141 EfiHalt (
142 VOID
143 );
144
145 /*++
146 Routine Description:
147 Halt the Cpu
148 Arguments:
149 None
150 Returns:
151 None
152 --*/
153 VOID
154 EFIAPI
155 EfiWbinvd (
156 VOID
157 );
158
159 /*++
160 Routine Description:
161 Write back and invalidate the Cpu cache
162 Arguments:
163 None
164 Returns:
165 None
166 --*/
167 VOID
168 EFIAPI
169 EfiInvd (
170 VOID
171 );
172
173 /*++
174 Routine Description:
175 Invalidate the Cpu cache
176 Arguments:
177 None
178 Returns:
179 None
180 --*/
181 VOID
182 EFIAPI
183 EfiCpuid (
184 IN UINT32 RegisterInEax,
185 OUT EFI_CPUID_REGISTER *Regs
186 );
187
188 /*++
189 Routine Description:
190 Get the Cpu info by excute the CPUID instruction
191 Arguments:
192 RegisterInEax: -The input value to put into register EAX
193 Regs: -The Output value
194 Returns:
195 None
196 --*/
197
198 VOID
199 EFIAPI
200 EfiCpuidExt (
201 IN UINT32 RegisterInEax,
202 IN UINT32 CacheLevel,
203 OUT EFI_CPUID_REGISTER *Regs
204 )
205 /*++
206 Routine Description:
207 When RegisterInEax != 4, the functionality is the same as EfiCpuid.
208 When RegisterInEax == 4, the function return the deterministic cache
209 parameters by excuting the CPUID instruction
210 Arguments:
211 RegisterInEax: - The input value to put into register EAX
212 CacheLevel: - The deterministic cache level
213 Regs: - The Output value
214 Returns:
215 None
216 --*/
217 ;
218
219 UINT64
220 EFIAPI
221 EfiReadMsr (
222 IN UINT32 Index
223 );
224
225 /*++
226 Routine Description:
227 Read Cpu MSR
228 Arguments:
229 Index: -The index value to select the register
230
231 Returns:
232 Return the read data
233 --*/
234 VOID
235 EFIAPI
236 EfiWriteMsr (
237 IN UINT32 Index,
238 IN UINT64 Value
239 );
240
241 /*++
242 Routine Description:
243 Write Cpu MSR
244 Arguments:
245 Index: -The index value to select the register
246 Value: -The value to write to the selected register
247 Returns:
248 None
249 --*/
250 UINT64
251 EFIAPI
252 EfiReadTsc (
253 VOID
254 );
255
256 /*++
257 Routine Description:
258 Read Time stamp
259 Arguments:
260 None
261 Returns:
262 Return the read data
263 --*/
264 VOID
265 EFIAPI
266 EfiDisableCache (
267 VOID
268 );
269
270 /*++
271 Routine Description:
272 Writing back and invalidate the cache,then diable it
273 Arguments:
274 None
275 Returns:
276 None
277 --*/
278 VOID
279 EFIAPI
280 EfiEnableCache (
281 VOID
282 );
283
284 /*++
285 Routine Description:
286 Invalidate the cache,then Enable it
287 Arguments:
288 None
289 Returns:
290 None
291 --*/
292 UINT32
293 EFIAPI
294 EfiGetEflags (
295 VOID
296 );
297
298 /*++
299 Routine Description:
300 Get Eflags
301 Arguments:
302 None
303 Returns:
304 Return the Eflags value
305 --*/
306 VOID
307 EFIAPI
308 EfiDisableInterrupts (
309 VOID
310 );
311
312 /*++
313 Routine Description:
314 Disable Interrupts
315 Arguments:
316 None
317 Returns:
318 None
319 --*/
320 VOID
321 EFIAPI
322 EfiEnableInterrupts (
323 VOID
324 );
325
326 /*++
327 Routine Description:
328 Enable Interrupts
329 Arguments:
330 None
331 Returns:
332 None
333 --*/
334
335
336 VOID
337 EFIAPI
338 EfiCpuVersion (
339 IN UINT16 *FamilyId, OPTIONAL
340 IN UINT8 *Model, OPTIONAL
341 IN UINT8 *SteppingId, OPTIONAL
342 IN UINT8 *Processor OPTIONAL
343 )
344 /*++
345
346 Routine Description:
347 Extract CPU detail version infomation
348
349 Arguments:
350 FamilyId - FamilyId, including ExtendedFamilyId
351 Model - Model, including ExtendedModel
352 SteppingId - SteppingId
353 Processor - Processor
354
355 --*/
356 ;
357
358 #endif