]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Library/EdkIIGlueLib/Include/Common/EdkIIGlueDependencies.h
1) Sync EdkCompatibilityPkg with EDK 1.04. The changes includes:
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / EdkIIGlueLib / Include / Common / EdkIIGlueDependencies.h
CommitLineData
3eb9473e 1/*++\r
2\r
3Copyright (c) 2004 - 2006, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12\r
13Module Name:\r
14\r
15 EdkIIGlueDepedencies.h\r
16\r
17Abstract:\r
18\r
19 Header file that lists dependency relations among library instances\r
20\r
21--*/\r
22\r
23#ifndef __EDKII_GLUE_DEPENDENCIES_H__\r
24#define __EDKII_GLUE_DEPENDENCIES_H__\r
25\r
26#include "EdkIIGlueProcessorBind.h"\r
27\r
28//\r
29// Declarations of dependencies among EdkII Glue Library instances and R8 Libraries\r
30// Pay attention to the order of following #define structures\r
31//\r
32\r
33\r
34//\r
35// PeiDxeDebugLibReportStatusCode\r
36// Actually almost every module and GlueLib instance needs this library, but GlueLib\r
37// instances don't have to list this library in their own inf files. Module inf\r
38// does this.\r
39//\r
40#ifdef __EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__\r
41 #ifndef __EDKII_GLUE_BASE_LIB__\r
42 #define __EDKII_GLUE_BASE_LIB__\r
43 #endif\r
44 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
45 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
46 #endif\r
47#endif\r
48\r
49//\r
50// BaseDebugLibNull\r
51//\r
52#ifdef __EDKII_GLUE_BASE_DEBUG_LIB_NULL__\r
53 #ifndef __EDKII_GLUE_BASE_LIB__\r
54 #define __EDKII_GLUE_BASE_LIB__\r
55 #endif\r
56 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
57 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
58 #endif\r
59 #ifndef __EDKII_GLUE_BASE_PRINT_LIB__\r
60 #define __EDKII_GLUE_BASE_PRINT_LIB__\r
61 #endif\r
62#endif\r
63\r
c7f33ca4 64//\r
65// DxePerformanceLib\r
66//\r
67#ifdef __EDKII_GLUE_DXE_PERFORMANCE_LIB__\r
68 #ifndef __EDKII_GLUE_BASE_LIB__\r
69 #define __EDKII_GLUE_BASE_LIB__\r
70 #endif\r
71 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
72 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
73 #endif\r
74 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
75 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
76 #endif\r
77 #ifndef __EDKII_GLUE_DXE_HOB_LIB__\r
78 #define __EDKII_GLUE_DXE_HOB_LIB__\r
79 #endif\r
80 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
81 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
82 #endif\r
83 #ifndef __EDKII_GLUE_UEFI_LIB__\r
84 #define __EDKII_GLUE_UEFI_LIB__\r
85 #endif\r
86#endif\r
87\r
88//\r
89// PeiPerformanceLib\r
90//\r
91#ifdef __EDKII_GLUE_PEI_PERFORMANCE_LIB__\r
92 #ifndef __EDKII_GLUE_BASE_LIB__\r
93 #define __EDKII_GLUE_BASE_LIB__\r
94 #endif\r
95 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
96 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
97 #endif\r
98 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__\r
99 #define __EDKII_GLUE_PEI_SERVICES_LIB__\r
100 #endif\r
101#endif\r
102\r
3eb9473e 103//\r
104// EdkDxeRuntimeDriverLib\r
105//\r
106#ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__\r
107 #ifndef __EDKII_GLUE_UEFI_LIB__\r
108 #define __EDKII_GLUE_UEFI_LIB__\r
109 #endif\r
110 #ifndef __EDKII_GLUE_BASE_LIB__\r
111 #define __EDKII_GLUE_BASE_LIB__\r
112 #endif\r
113 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
114 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
115 #endif\r
116#ifdef MDE_CPU_IPF // IPF\r
117 #ifndef __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
118 #define __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
119 #endif\r
120#endif // IPF\r
121#endif\r
122\r
123//\r
124// EdkDxeSalLib\r
125//\r
126#ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
127 #ifndef __EDKII_GLUE_BASE_LIB__\r
128 #define __EDKII_GLUE_BASE_LIB__\r
129 #endif\r
130 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
131 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
132 #endif\r
133#endif\r
134\r
135//\r
136// BasePciLibCf8\r
137//\r
138#ifdef __EDKII_GLUE_BASE_PCI_LIB_CF8__\r
139 #ifndef __EDKII_GLUE_BASE_PCI_CF8_LIB__\r
140 #define __EDKII_GLUE_BASE_PCI_CF8_LIB__\r
141 #endif\r
142#endif\r
143\r
144//\r
145// BasePciLibPciExpress\r
146//\r
147#ifdef __EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__\r
148 #ifndef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__\r
149 #define __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__\r
150 #endif\r
151#endif\r
152\r
153//\r
154// BasePciCf8Lib\r
155//\r
156#ifdef __EDKII_GLUE_BASE_PCI_CF8_LIB__\r
157#ifndef MDE_CPU_EBC\r
158 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
159 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
160 #endif\r
161#else\r
162 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
163 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
164 #endif\r
165#endif \r
166#endif\r
167\r
168//\r
169// BasePciExpressLib\r
170//\r
171#ifdef __EDKII_GLUE_BASE_PCI_EXPRESS_LIB__\r
172#ifndef MDE_CPU_EBC\r
173 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
174 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
175 #endif\r
176#else\r
177 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
178 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
179 #endif\r
180#endif\r
181#endif\r
182\r
183//\r
184// BaseTimerLibLocalApic\r
185//\r
186#ifdef __EDKII_GLUE_BASE_TIMER_LIB_LOCAL_APIC__\r
187 #ifndef __EDKII_GLUE_BASE_LIB__\r
188 #define __EDKII_GLUE_BASE_LIB__\r
189 #endif\r
190#ifndef MDE_CPU_EBC \r
191 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
192 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
193 #endif\r
194#else\r
195 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
196 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
197 #endif\r
198#endif \r
199#endif\r
200\r
201//\r
202// DxeReportStatusCodeLib\r
203//\r
204#ifdef __EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__\r
205 #ifndef __EDKII_GLUE_BASE_LIB__\r
206 #define __EDKII_GLUE_BASE_LIB__\r
207 #endif\r
208#ifndef MDE_CPU_EBC\r
209 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
210 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
211 #endif\r
212#else\r
213 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
214 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
215 #endif\r
216#endif \r
217 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
218 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
219 #endif\r
220 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
221 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
222 #endif\r
223 #ifndef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
224 #define __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
225 #endif\r
226#endif\r
227\r
228//\r
229// PeiReportStatusCodeLib\r
230//\r
231#ifdef __EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__\r
232 #ifndef __EDKII_GLUE_BASE_LIB__\r
233 #define __EDKII_GLUE_BASE_LIB__\r
234 #endif\r
235 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
236 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
237 #endif\r
238#ifndef MDE_CPU_EBC \r
239 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
240 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
241 #endif\r
242#else\r
243 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
244 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
245 #endif\r
246#endif \r
247#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
248 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
249 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
250 #endif\r
251#elif defined(MDE_CPU_IPF)\r
252 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
253 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
254 #endif\r
255#endif \r
256 //\r
257 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
258 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
259 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
260 //\r
261#endif\r
262\r
263//\r
264// BasePeCoffLib\r
265//\r
266#ifdef __EDKII_GLUE_BASE_PE_COFF_LIB__\r
267 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
268 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
269 #endif\r
270#endif\r
271\r
272//\r
273// BaseUefiDecompressLib\r
274//\r
275#ifdef __EDKII_GLUE_BASE_UEFI_DECOMPRESS_LIB__\r
276 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
277 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
278 #endif\r
279#endif\r
280\r
281//\r
282// DxeHobLib\r
283//\r
284#ifdef __EDKII_GLUE_DXE_HOB_LIB__\r
285 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
286 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
287 #endif\r
288 #ifndef __EDKII_GLUE_UEFI_LIB__\r
289 #define __EDKII_GLUE_UEFI_LIB__\r
290 #endif\r
291#endif\r
292\r
293//\r
294// HiiLib\r
295//\r
296#ifdef __EDKII_GLUE_HII_LIB__\r
297 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
298 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
299 #endif\r
300#endif\r
301\r
302//\r
303// UefiDevicePathLib\r
304//\r
305#ifdef __EDKII_GLUE_UEFI_DEVICE_PATH_LIB__\r
306 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
307 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
308 #endif\r
309 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
310 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
311 #endif\r
312 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
313 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
314 #endif\r
315#endif\r
316\r
317//\r
318// UefiLib\r
319//\r
320#ifdef __EDKII_GLUE_UEFI_LIB__\r
321 #ifndef __EDKII_GLUE_BASE_LIB__\r
322 #define __EDKII_GLUE_BASE_LIB__\r
323 #endif\r
324 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
325 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
326 #endif\r
327 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
328 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
329 #endif\r
330 #ifndef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
331 #define __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
332 #endif\r
333#endif\r
334\r
335//\r
336// DxeMemoryAllocationLib\r
337//\r
338#ifdef __EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__\r
339 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
340 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
341 #endif\r
342 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
343 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
344 #endif\r
345#endif\r
346\r
347//\r
348// DxeSmbusLib\r
349//\r
350#ifdef __EDKII_GLUE_DXE_SMBUS_LIB__\r
351 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
352 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
353 #endif\r
354 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
355 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
356 #endif\r
357#endif\r
358\r
359//\r
360// PeiHobLib\r
361//\r
362#ifdef __EDKII_GLUE_PEI_HOB_LIB__\r
363 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
364 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
365 #endif\r
366 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__\r
367 #define __EDKII_GLUE_PEI_SERVICES_LIB__\r
368 #endif\r
369#endif\r
370\r
371//\r
372// PeiMemoryAllocationLib\r
373//\r
374#ifdef __EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__\r
375 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
376 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
377 #endif\r
378#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
379 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
380 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
381 #endif\r
382#elif defined(MDE_CPU_IPF)\r
383 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
384 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
385 #endif\r
386#endif \r
387 //\r
388 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
389 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
390 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
391 //\r
392#endif\r
393\r
394//\r
395// PeiResourcePublicationLib\r
396//\r
397#ifdef __EDKII_GLUE_PEI_RESOURCE_PUBLICATION_LIB__\r
398 #ifndef __EDKII_GLUE_PEI_SERVICES_LIB__\r
399 #define __EDKII_GLUE_PEI_SERVICES_LIB__\r
400 #endif\r
401#endif\r
402\r
403//\r
404// PeiServicesLib\r
405//\r
406#ifdef __EDKII_GLUE_PEI_SERVICES_LIB__\r
407#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
408 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
409 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
410 #endif\r
411#elif defined(MDE_CPU_IPF)\r
412 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
413 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
414 #endif\r
415#endif \r
416 //\r
417 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
418 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
419 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
420 //\r
421#endif\r
422\r
423//\r
424// PeiSmbusLib\r
425//\r
426#ifdef __EDKII_GLUE_PEI_SMBUS_LIB__\r
427 #ifndef __EDKII_GLUE_BASE_MEMORY_LIB__\r
428 #define __EDKII_GLUE_BASE_MEMORY_LIB__\r
429 #endif\r
430#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64) \r
431 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
432 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
433 #endif\r
434#elif defined(MDE_CPU_IPF)\r
435 #ifndef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
436 #define __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
437 #endif\r
438#endif \r
439 //\r
440 // If necessary, __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__ or\r
441 // __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__ can be\r
442 // replaced with __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
443 //\r
444#endif\r
445\r
446//\r
447// PeiServicesTablePointerLibMm7\r
448//\r
449#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
450 #ifndef __EDKII_GLUE_BASE_LIB__\r
451 #define __EDKII_GLUE_BASE_LIB__\r
452 #endif\r
453#endif\r
454\r
455//\r
456// PeiServicesTablePointerLibKr1\r
457//\r
458#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
459 #ifndef __EDKII_GLUE_BASE_LIB__\r
460 #define __EDKII_GLUE_BASE_LIB__\r
461 #endif\r
462#endif\r
463\r
464\r
465//\r
466// UefiDriverModelLib\r
467//\r
468#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
469 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
470 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
471 #endif\r
472#endif\r
473\r
474//\r
475// DxeServicesTableLib\r
476//\r
477#ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__\r
478 #ifndef __EDKII_GLUE_UEFI_LIB__\r
479 #define __EDKII_GLUE_UEFI_LIB__\r
480 #endif\r
481#endif\r
482\r
483//\r
484// BasePrintLib\r
485//\r
486#ifdef __EDKII_GLUE_BASE_PRINT_LIB__\r
487 #ifndef __EDKII_GLUE_BASE_LIB__\r
488 #define __EDKII_GLUE_BASE_LIB__\r
489 #endif\r
490#endif\r
491\r
492//\r
493// BaseMemoryLib\r
494//\r
495#ifdef __EDKII_GLUE_BASE_MEMORY_LIB__\r
496 #ifndef __EDKII_GLUE_BASE_LIB__\r
497 #define __EDKII_GLUE_BASE_LIB__\r
498 #endif\r
499#endif\r
500\r
501//\r
502// BasePostCodeLibPort80\r
503//\r
504#ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__\r
505#ifndef MDE_CPU_EBC\r
506 #ifndef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
507 #define __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
508 #endif\r
509#else\r
510 #ifndef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
511 #define __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
512 #endif\r
513#endif \r
514#endif\r
515\r
516//\r
517// BaseIoLibIntrinsic\r
518//\r
519#ifdef __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__\r
520 #ifndef __EDKII_GLUE_BASE_LIB__\r
521 #define __EDKII_GLUE_BASE_LIB__\r
522 #endif\r
523#endif\r
524\r
525//\r
526// DxeIoLibCpuIo\r
527//\r
528#ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
529 #ifndef __EDKII_GLUE_BASE_LIB__\r
530 #define __EDKII_GLUE_BASE_LIB__\r
531 #endif\r
532 #ifndef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
533 #define __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
534 #endif\r
535#endif\r
536\r
537//\r
538// UefiBootServicesTableLib\r
539//\r
540#ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
541#endif\r
542\r
543//\r
544// BaseCacheMaintenanceLib\r
545//\r
546#ifdef __EDKII_GLUE_BASE_CACHE_MAINTENANCE_LIB__\r
547 #ifndef __EDKII_GLUE_BASE_LIB__\r
548 #define __EDKII_GLUE_BASE_LIB__\r
549 #endif\r
550#endif\r
551\r
552//\r
553// BaseLib\r
554//\r
555#ifdef __EDKII_GLUE_BASE_LIB__\r
556#endif\r
557\r
558//\r
559// UefiRuntimeServicesTableLib\r
560//\r
561#ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
562#endif\r
563\r
564//\r
565// BasePeCoffGetEntryPointLib\r
566//\r
567#ifdef __EDKII_GLUE_BASE_PE_COFF_GET_ENTRY_POINT_LIB__\r
568#endif\r
569\r
570//\r
571// PeiServicesTablePointerLib\r
572//\r
573#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
574#endif\r
575\r
576//\r
577// BasePostCodeLibDebug\r
578//\r
579#ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__\r
580 //\r
581 // A DebugLib instance\r
582 // Usually EdkIIGluePeiDxeDebugLibReportStatusCodeLib is listed in module inf\r
583 //\r
584#endif\r
585\r
586//\r
587// PeiDxePostCodeLibReportStatusCode\r
588//\r
589#ifdef __EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__\r
590 //\r
591 // PEI or DXE ReportStatusCodeLib instance\r
592 // Usually EdkIIGluePei/DxeReportStatusCodeLib is listed in module inf\r
593 //\r
594#endif\r
595\r
c7f33ca4 596//\r
597// Whether _gDriverExitBootServicesEvent[] contains effective handler\r
598//\r
599#if defined(__EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__) || defined(__EDKII_GLUE_EXIT_BOOT_SERVICES_EVENT_HANDLER__)\r
600 #define __EDKII_GLUE_HAVE_DRIVER_EXIT_BOOT_SERVICES_EVENT__ 1\r
601#else \r
602 #define __EDKII_GLUE_HAVE_DRIVER_EXIT_BOOT_SERVICES_EVENT__ 0\r
603#endif\r
3eb9473e 604\r
605//\r
606// Check against multiple instances of same library class being used\r
607//\r
608#if defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)\r
609 #error EdkIIGluePeiDxeDebugLibReportStatusCode and EdkIIGlueBaseDebugLibNull: can only be mutual exclusively used.\r
610#endif\r
611\r
612#if defined(__EDKII_GLUE_BASE_PCI_LIB_PCI_EXPRESS__) && defined(__EDKII_GLUE_BASE_PCI_LIB_CF8__)\r
613 #error EdkIIGluePciLibPciExpress and EdkIIGluePciLibCf8: can only be mutual exclusively used.\r
614#endif\r
615\r
616#if defined (__EDKII_GLUE_DXE_HOB_LIB__) && (__EDKII_GLUE_PEI_HOB_LIB__)\r
617 #error EdkIIGlueDxeHobLib and EdkIIGluePeiHobLib: can only be mutual exclusively used.\r
618#endif\r
619\r
620#if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__)\r
621 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGlueBasePostCodeLibDebug: can only be mutual exclusively used.\r
622#endif\r
623\r
624#if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_PORT_80__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)\r
625 #error EdkIIGlueBasePostCodeLibPort80 and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.\r
626#endif\r
627\r
628#if defined(__EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__) && defined(__EDKII_GLUE_PEI_DXE_POST_CODE_LIB_REPORT_STATUS_CODE__)\r
629 #error EdkIIGlueBasePostCodeLibDebug and EdkIIGluePeiDxePostCodeLibReportStatusCode: can only be mutual exclusively used.\r
630#endif\r
631\r
632#if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__)\r
633 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibMm7: can only be mutual exclusively used.\r
634#endif\r
635\r
636#if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)\r
637 #error EdkIIGluePeiServicesTablePointerLib and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.\r
638#endif\r
639\r
640#if defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__) && defined(__EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__)\r
641 #error EdkIIGluePeiServicesTablePointerLibMm7 and EdkIIGluePeiServicesTablePointerLibKr1: can only be mutual exclusively used.\r
642#endif\r
643\r
644#if defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)\r
645 #error EdkIIGlueDxeReportStatusCodeLib and EdkIIGluePeiReportStatusCodeLib: can only be mutual exclusively used.\r
646#endif\r
647\r
648#if defined(__EDKII_GLUE_DXE_MEMORY_ALLOCATION_LIB__) && defined(__EDKII_GLUE_PEI_MEMORY_ALLOCATION_LIB__)\r
649 #error EdkIIGlueDxeMemoryAllocationLib and EdkIIGluePeiMemoryAllocationLib: can only be mutual exclusively used.\r
650#endif\r
651\r
652#if defined(__EDKII_GLUE_DXE_SMBUS_LIB__) && defined(__EDKII_GLUE_PEI_SMBUS_LIB__)\r
653 #error EdkIIGlueDxeSmbusLib and EdkIIGluePeiSmbusLib: can only be mutual exclusively used.\r
654#endif\r
655\r
656#if defined(__EDKII_GLUE_BASE_IO_LIB_INTRINSIC__) && defined(__EDKII_GLUE_DXE_IO_LIB_CPU_IO__)\r
657 #error EdkIIGlueBaseIoLibIntrinsic and EdkIIGlueDxeIoLibCpuIo: can only be mutual exclusively used.\r
658#endif\r
659\r
660//\r
661// Some instances must be supplied\r
662//\r
663#ifdef __EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__\r
664 #if !defined(__EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__) && !defined(__EDKII_GLUE_PEI_REPORT_STATUS_CODE_LIB__)\r
665 #error You use EdkIIGluePeiDxeDebugLibReportStatusCode, so either EdkIIGlueDxeReportStatusCodeLib or EdkIIGluePeiReportStatusCodeLib must be supplied\r
666 #endif\r
667#endif\r
668\r
669#ifdef __EDKII_GLUE_BASE_POST_CODE_LIB_DEBUG__\r
670 #if !defined(__EDKII_GLUE_PEI_DXE_DEBUG_LIB_REPORT_STATUS_CODE__) && !defined(__EDKII_GLUE_BASE_DEBUG_LIB_NULL__)\r
671 #error You use EdkIIGlueBasePostCodeLibDebug, so either EdkIIGluePeiDxeDebugLibReportStatusCode or EdkIIGlueBaseDebugLibNull must be supplied\r
672 #endif\r
673#endif\r
674\r
675//\r
676// EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined\r
677//\r
678#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
679 #ifndef __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__\r
680 #error "EdkIIGlueUefiDriverModelLib used, but no Driver Binding Protocol defined. Please define __EDKII_GLUE_DRIVER_BINDING_PROTOCOL_INSTANCE__."\r
681 #endif\r
682#endif\r
683\r
684//\r
685// EdkII Glue Library Constructors:\r
686// NOTE: the constructors must be called according to dependency order\r
687//\r
688// UefiBootServicesTableLib UefiBootServicesTableLibConstructor()\r
689// DxeIoLibCpuIo IoLibConstructor()\r
690// UefiRuntimeServicesTableLib UefiRuntimeServicesTableLibConstructor()\r
691// EdkDxeRuntimeDriverLib RuntimeDriverLibConstruct()\r
692// DxeHobLib HobLibConstructor()\r
693// UefiDriverModelLib UefiDriverModelLibConstructor()\r
694// PeiServicesTablePointerLib PeiServicesTablePointerLibConstructor()\r
695// PeiServicesTablePointerLibMm7 PeiServicesTablePointerLibConstructor()\r
696// PeiServicesTablePointerLibKr1 PeiServicesTablePointerLibConstructor()\r
697// DxeSmbusLib SmbusLibConstructor()\r
698// DxeServicesTableLib DxeServicesTableLibConstructor()\r
699// DxeSalLib DxeSalLibConstructor()\r
700//\r
701\r
702#ifdef __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\r
703EFI_STATUS\r
c7f33ca4 704EFIAPI\r
3eb9473e 705UefiBootServicesTableLibConstructor (\r
706 IN EFI_HANDLE ImageHandle,\r
707 IN EFI_SYSTEM_TABLE *SystemTable\r
708 );\r
709#endif\r
710\r
711#ifdef __EDKII_GLUE_DXE_IO_LIB_CPU_IO__\r
712EFI_STATUS\r
713EFIAPI\r
714IoLibConstructor (\r
715 IN EFI_HANDLE ImageHandle,\r
716 IN EFI_SYSTEM_TABLE *SystemTable\r
717 );\r
718#endif\r
719\r
720#ifdef __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__\r
721EFI_STATUS\r
c7f33ca4 722EFIAPI\r
3eb9473e 723UefiRuntimeServicesTableLibConstructor (\r
724 IN EFI_HANDLE ImageHandle,\r
725 IN EFI_SYSTEM_TABLE *SystemTable\r
726 );\r
727#endif\r
728\r
729#ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__\r
730EFI_STATUS\r
c7f33ca4 731EFIAPI\r
3eb9473e 732RuntimeDriverLibConstruct (\r
733 IN EFI_HANDLE ImageHandle,\r
734 IN EFI_SYSTEM_TABLE *SystemTable\r
735 );\r
736#endif\r
737\r
738#ifdef __EDKII_GLUE_DXE_HOB_LIB__\r
739EFI_STATUS\r
c7f33ca4 740EFIAPI\r
3eb9473e 741HobLibConstructor (\r
742 IN EFI_HANDLE ImageHandle,\r
743 IN EFI_SYSTEM_TABLE *SystemTable\r
744 );\r
745#endif\r
746\r
747#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
748EFI_STATUS\r
c7f33ca4 749EFIAPI\r
3eb9473e 750UefiDriverModelLibConstructor (\r
751 IN EFI_HANDLE ImageHandle,\r
752 IN EFI_SYSTEM_TABLE *SystemTable\r
753 );\r
754#endif\r
755\r
756#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB__\r
757EFI_STATUS\r
c7f33ca4 758EFIAPI\r
3eb9473e 759PeiServicesTablePointerLibConstructor (\r
760 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
761 IN EFI_PEI_SERVICES **PeiServices\r
762 );\r
763#endif\r
764\r
765#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_MM7__\r
766EFI_STATUS\r
c7f33ca4 767EFIAPI\r
3eb9473e 768PeiServicesTablePointerLibConstructor (\r
769 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
770 IN EFI_PEI_SERVICES **PeiServices\r
771 );\r
772#endif\r
773\r
774#ifdef __EDKII_GLUE_PEI_SERVICES_TABLE_POINTER_LIB_KR1__\r
775EFI_STATUS\r
c7f33ca4 776EFIAPI\r
3eb9473e 777PeiServicesTablePointerLibConstructor (\r
778 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
779 IN EFI_PEI_SERVICES **PeiServices\r
780 );\r
781#endif\r
782\r
783#ifdef __EDKII_GLUE_DXE_SMBUS_LIB__\r
784EFI_STATUS\r
785EFIAPI\r
786SmbusLibConstructor (\r
787 IN EFI_HANDLE ImageHandle,\r
788 IN EFI_SYSTEM_TABLE *SystemTable\r
789 );\r
790#endif\r
791\r
792#ifdef __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__\r
793EFI_STATUS\r
c7f33ca4 794EFIAPI\r
3eb9473e 795DxeServicesTableLibConstructor (\r
796 IN EFI_HANDLE ImageHandle,\r
797 IN EFI_SYSTEM_TABLE *SystemTable\r
798 );\r
799#endif\r
800\r
801#ifdef __EDKII_GLUE_EDK_DXE_SAL_LIB__\r
802EFI_STATUS\r
803EFIAPI\r
804DxeSalLibConstructor (\r
805 IN EFI_HANDLE ImageHandle,\r
806 IN EFI_SYSTEM_TABLE *SystemTable\r
807 );\r
808#endif\r
809\r
810//\r
811// EdkII Glue Library Destructors:\r
812// NOTE: the destructors must be called according to dependency order\r
813//\r
814// UefiDriverModelLibDestructor UefiDriverModelLibDestructor()\r
815// EdkDxeRuntimeDriverLib RuntimeDriverLibDeconstruct()\r
816//\r
817#ifdef __EDKII_GLUE_UEFI_DRIVER_MODEL_LIB__\r
818EFI_STATUS\r
c7f33ca4 819EFIAPI\r
3eb9473e 820UefiDriverModelLibDestructor (\r
821 IN EFI_HANDLE ImageHandle,\r
822 IN EFI_SYSTEM_TABLE *SystemTable\r
823 );\r
824#endif\r
825\r
826#ifdef __EDKII_GLUE_EDK_DXE_RUNTIME_DRIVER_LIB__\r
827EFI_STATUS\r
c7f33ca4 828EFIAPI\r
3eb9473e 829RuntimeDriverLibDeconstruct (\r
830 IN EFI_HANDLE ImageHandle,\r
831 IN EFI_SYSTEM_TABLE *SystemTable\r
832 );\r
833#endif\r
834\r
835#endif\r