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