6144513a86ec57d0af6b7d09df8b849fd581b2fd
[mirror_edk2.git] / EmbeddedPkg / Include / Library / PrePiLib.h
1 /** @file
2 Library that helps implement monolithic PEI. (SEC goes to DXE)
3
4 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
5
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 **/
15
16 #ifndef __PRE_PI_LIB_H__
17 #define __PRE_PI_LIB_H__
18
19 #include <Guid/ExtractSection.h>
20
21 /**
22 This service enables discovery of additional firmware volumes.
23
24 @param Instance This instance of the firmware volume to find. The value 0 is the
25 Boot Firmware Volume (BFV).
26 @param FwVolHeader Pointer to the firmware volume header of the volume to return.
27
28 @retval EFI_SUCCESS The volume was found.
29 @retval EFI_NOT_FOUND The volume was not found.
30 @retval EFI_INVALID_PARAMETER FwVolHeader is NULL.
31
32 **/
33 EFI_STATUS
34 EFIAPI
35 FfsFindNextVolume (
36 IN UINTN Instance,
37 IN OUT EFI_PEI_FV_HANDLE *VolumeHandle
38 );
39
40
41 /**
42 This service enables discovery of additional firmware files.
43
44 @param SearchType A filter to find files only of this type.
45 @param FwVolHeader Pointer to the firmware volume header of the volume to search.
46 This parameter must point to a valid FFS volume.
47 @param FileHeader Pointer to the current file from which to begin searching.
48
49 @retval EFI_SUCCESS The file was found.
50 @retval EFI_NOT_FOUND The file was not found.
51 @retval EFI_NOT_FOUND The header checksum was not zero.
52
53 **/
54 EFI_STATUS
55 EFIAPI
56 FfsFindNextFile (
57 IN EFI_FV_FILETYPE SearchType,
58 IN EFI_PEI_FV_HANDLE VolumeHandle,
59 IN OUT EFI_PEI_FILE_HANDLE *FileHandle
60 );
61
62
63 /**
64 This service enables discovery sections of a given type within a valid FFS file.
65
66 @param SearchType The value of the section type to find.
67 @param FfsFileHeader A pointer to the file header that contains the set of sections to
68 be searched.
69 @param SectionData A pointer to the discovered section, if successful.
70
71 @retval EFI_SUCCESS The section was found.
72 @retval EFI_NOT_FOUND The section was not found.
73
74 **/
75 EFI_STATUS
76 EFIAPI
77 FfsFindSectionData (
78 IN EFI_SECTION_TYPE SectionType,
79 IN EFI_PEI_FILE_HANDLE FileHandle,
80 OUT VOID **SectionData
81 );
82
83
84 /**
85 Find a file in the volume by name
86
87 @param FileName A pointer to the name of the file to
88 find within the firmware volume.
89
90 @param VolumeHandle The firmware volume to search FileHandle
91 Upon exit, points to the found file's
92 handle or NULL if it could not be found.
93
94 @retval EFI_SUCCESS File was found.
95
96 @retval EFI_NOT_FOUND File was not found.
97
98 @retval EFI_INVALID_PARAMETER VolumeHandle or FileHandle or
99 FileName was NULL.
100
101 **/
102 EFI_STATUS
103 EFIAPI
104 FfsFindByName (
105 IN CONST EFI_GUID *FileName,
106 IN CONST EFI_PEI_FV_HANDLE VolumeHandle,
107 OUT EFI_PEI_FILE_HANDLE *FileHandle
108 );
109
110
111 /**
112 Get information about the file by name.
113
114 @param FileHandle Handle of the file.
115
116 @param FileInfo Upon exit, points to the file's
117 information.
118
119 @retval EFI_SUCCESS File information returned.
120
121 @retval EFI_INVALID_PARAMETER If FileHandle does not
122 represent a valid file.
123
124 @retval EFI_INVALID_PARAMETER If FileInfo is NULL.
125
126 **/
127 EFI_STATUS
128 EFIAPI
129 FfsGetFileInfo (
130 IN CONST EFI_PEI_FILE_HANDLE FileHandle,
131 OUT EFI_FV_FILE_INFO *FileInfo
132 );
133
134
135 /**
136 Get Information about the volume by name
137
138 @param VolumeHandle Handle of the volume.
139
140 @param VolumeInfo Upon exit, points to the volume's
141 information.
142
143 @retval EFI_SUCCESS File information returned.
144
145 @retval EFI_INVALID_PARAMETER If FileHandle does not
146 represent a valid file.
147
148 @retval EFI_INVALID_PARAMETER If FileInfo is NULL.
149
150 **/
151 EFI_STATUS
152 EFIAPI
153 FfsGetVolumeInfo (
154 IN EFI_PEI_FV_HANDLE VolumeHandle,
155 OUT EFI_FV_INFO *VolumeInfo
156 );
157
158
159
160 /**
161 Get Fv image from the FV type file, then add FV & FV2 Hob.
162
163 @param FileHandle File handle of a Fv type file.
164
165
166 @retval EFI_NOT_FOUND FV image can't be found.
167 @retval EFI_SUCCESS Successfully to process it.
168
169 **/
170 EFI_STATUS
171 EFIAPI
172 FfsProcessFvFile (
173 IN EFI_PEI_FILE_HANDLE FvFileHandle
174 );
175
176
177 /**
178 Search through every FV until you find a file of type FileType
179
180 @param FileType File handle of a Fv type file.
181 @param Volumehandle On succes Volume Handle of the match
182 @param FileHandle On success File Handle of the match
183
184 @retval EFI_NOT_FOUND FV image can't be found.
185 @retval EFI_SUCCESS Successfully found FileType
186
187 **/
188 EFI_STATUS
189 EFIAPI
190 FfsAnyFvFindFirstFile (
191 IN EFI_FV_FILETYPE FileType,
192 OUT EFI_PEI_FV_HANDLE *VolumeHandle,
193 OUT EFI_PEI_FILE_HANDLE *FileHandle
194 );
195
196
197 /**
198 Get Fv image from the FV type file, then add FV & FV2 Hob.
199
200 @param FileHandle File handle of a Fv type file.
201
202
203 @retval EFI_NOT_FOUND FV image can't be found.
204 @retval EFI_SUCCESS Successfully to process it.
205
206 **/
207 EFI_STATUS
208 EFIAPI
209 FfsProcessFvFile (
210 IN EFI_PEI_FILE_HANDLE FvFileHandle
211 );
212
213
214 /**
215 This service enables PEIMs to ascertain the present value of the boot mode.
216
217
218 @retval BootMode
219
220 **/
221 EFI_BOOT_MODE
222 EFIAPI
223 GetBootMode (
224 VOID
225 );
226
227
228 /**
229 This service enables PEIMs to update the boot mode variable.
230
231 @param BootMode The value of the boot mode to set.
232
233 @retval EFI_SUCCESS The value was successfully updated
234
235 **/
236 EFI_STATUS
237 EFIAPI
238 SetBootMode (
239 IN EFI_BOOT_MODE BootMode
240 );
241
242 /**
243 This service enables a PEIM to ascertain the address of the list of HOBs in memory.
244
245 @param HobList A pointer to the list of HOBs that the PEI Foundation will initialize.
246
247 @retval EFI_SUCCESS The list was successfully returned.
248 @retval EFI_NOT_AVAILABLE_YET The HOB list is not yet published.
249
250 **/
251 VOID *
252 EFIAPI
253 GetHobList (
254 VOID
255 );
256
257
258 /**
259 Updates the pointer to the HOB list.
260
261 @param HobList Hob list pointer to store
262
263 **/
264 EFI_STATUS
265 EFIAPI
266 SetHobList (
267 IN VOID *HobList
268 );
269
270 EFI_HOB_HANDOFF_INFO_TABLE*
271 HobConstructor (
272 IN VOID *EfiMemoryBegin,
273 IN UINTN EfiMemoryLength,
274 IN VOID *EfiFreeMemoryBottom,
275 IN VOID *EfiFreeMemoryTop
276 );
277
278 /**
279 Retrieves the magic value from the PE/COFF header.
280
281 @param Hdr The buffer in which to return the PE32, PE32+, or TE header.
282
283 @return EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC - Image is PE32
284 @return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC - Image is PE32+
285
286 **/
287 VOID
288 CreateHobList (
289 IN VOID *MemoryBegin,
290 IN UINTN MemoryLength,
291 IN VOID *HobBase,
292 IN VOID *StackBase
293 );
294
295
296 /**
297 This service enables PEIMs to create various types of HOBs.
298
299 @param Type The type of HOB to be installed.
300 @param Length The length of the HOB to be added.
301
302 @retval !NULL The HOB was successfully created.
303 @retval NULL There is no additional space for HOB creation.
304
305 **/
306 VOID *
307 CreateHob (
308 IN UINT16 HobType,
309 IN UINT16 HobLenght
310 );
311
312
313 /**
314 Returns the next instance of a HOB type from the starting HOB.
315
316 This function searches the first instance of a HOB type from the starting HOB pointer.
317 If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
318 In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
319 unconditionally: it returns HobStart back if HobStart itself meets the requirement;
320 caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
321 If HobStart is NULL, then ASSERT().
322
323 @param Type The HOB type to return.
324 @param HobStart The starting HOB pointer to search from.
325
326 @return The next instance of a HOB type from the starting HOB.
327
328 **/
329 VOID *
330 EFIAPI
331 GetNextHob (
332 IN UINT16 Type,
333 IN CONST VOID *HobStart
334 );
335
336 /**
337 Returns the first instance of a HOB type among the whole HOB list.
338
339 This function searches the first instance of a HOB type among the whole HOB list.
340 If there does not exist such HOB type in the HOB list, it will return NULL.
341
342 @param Type The HOB type to return.
343
344 @return The next instance of a HOB type from the starting HOB.
345
346 **/
347 VOID *
348 EFIAPI
349 GetFirstHob (
350 IN UINT16 Type
351 );
352
353 /**
354 This function searches the first instance of a HOB from the starting HOB pointer.
355 Such HOB should satisfy two conditions:
356 its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
357 If there does not exist such HOB from the starting HOB pointer, it will return NULL.
358 Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
359 to extract the data section and its size info respectively.
360 In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
361 unconditionally: it returns HobStart back if HobStart itself meets the requirement;
362 caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
363 If Guid is NULL, then ASSERT().
364 If HobStart is NULL, then ASSERT().
365
366 @param Guid The GUID to match with in the HOB list.
367 @param HobStart A pointer to a Guid.
368
369 @return The next instance of the matched GUID HOB from the starting HOB.
370
371 **/
372 VOID *
373 EFIAPI
374 GetNextGuidHob (
375 IN CONST EFI_GUID *Guid,
376 IN CONST VOID *HobStart
377 );
378
379 /**
380 This function searches the first instance of a HOB among the whole HOB list.
381 Such HOB should satisfy two conditions:
382 its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
383 If there does not exist such HOB from the starting HOB pointer, it will return NULL.
384 Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
385 to extract the data section and its size info respectively.
386 If Guid is NULL, then ASSERT().
387
388 @param Guid The GUID to match with in the HOB list.
389
390 @return The first instance of the matched GUID HOB among the whole HOB list.
391
392 **/
393 VOID *
394 EFIAPI
395 GetFirstGuidHob (
396 IN CONST EFI_GUID *Guid
397 );
398
399
400 /**
401 Builds a HOB for a loaded PE32 module.
402
403 This function builds a HOB for a loaded PE32 module.
404 It can only be invoked during PEI phase;
405 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
406 If ModuleName is NULL, then ASSERT().
407 If there is no additional space for HOB creation, then ASSERT().
408
409 @param ModuleName The GUID File Name of the module.
410 @param MemoryAllocationModule The 64 bit physical address of the module.
411 @param ModuleLength The length of the module in bytes.
412 @param EntryPoint The 64 bit physical address of the module entry point.
413
414 **/
415 VOID
416 EFIAPI
417 BuildModuleHob (
418 IN CONST EFI_GUID *ModuleName,
419 IN EFI_PHYSICAL_ADDRESS MemoryAllocationModule,
420 IN UINT64 ModuleLength,
421 IN EFI_PHYSICAL_ADDRESS EntryPoint
422 );
423
424 /**
425 Builds a HOB that describes a chunk of system memory.
426
427 This function builds a HOB that describes a chunk of system memory.
428 It can only be invoked during PEI phase;
429 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
430 If there is no additional space for HOB creation, then ASSERT().
431
432 @param ResourceType The type of resource described by this HOB.
433 @param ResourceAttribute The resource attributes of the memory described by this HOB.
434 @param PhysicalStart The 64 bit physical address of memory described by this HOB.
435 @param NumberOfBytes The length of the memory described by this HOB in bytes.
436
437 **/
438 VOID
439 EFIAPI
440 BuildResourceDescriptorHob (
441 IN EFI_RESOURCE_TYPE ResourceType,
442 IN EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute,
443 IN EFI_PHYSICAL_ADDRESS PhysicalStart,
444 IN UINT64 NumberOfBytes
445 );
446
447 /**
448 Builds a GUID HOB with a certain data length.
449
450 This function builds a customized HOB tagged with a GUID for identification
451 and returns the start address of GUID HOB data so that caller can fill the customized data.
452 The HOB Header and Name field is already stripped.
453 It can only be invoked during PEI phase;
454 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
455 If Guid is NULL, then ASSERT().
456 If there is no additional space for HOB creation, then ASSERT().
457 If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
458
459 @param Guid The GUID to tag the customized HOB.
460 @param DataLength The size of the data payload for the GUID HOB.
461
462 @return The start address of GUID HOB data.
463
464 **/
465 VOID *
466 EFIAPI
467 BuildGuidHob (
468 IN CONST EFI_GUID *Guid,
469 IN UINTN DataLength
470 );
471
472 /**
473 Copies a data buffer to a newly-built HOB.
474
475 This function builds a customized HOB tagged with a GUID for identification,
476 copies the input data to the HOB data field and returns the start address of the GUID HOB data.
477 The HOB Header and Name field is already stripped.
478 It can only be invoked during PEI phase;
479 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
480 If Guid is NULL, then ASSERT().
481 If Data is NULL and DataLength > 0, then ASSERT().
482 If there is no additional space for HOB creation, then ASSERT().
483 If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
484
485 @param Guid The GUID to tag the customized HOB.
486 @param Data The data to be copied into the data field of the GUID HOB.
487 @param DataLength The size of the data payload for the GUID HOB.
488
489 @return The start address of GUID HOB data.
490
491 **/
492 VOID *
493 EFIAPI
494 BuildGuidDataHob (
495 IN CONST EFI_GUID *Guid,
496 IN VOID *Data,
497 IN UINTN DataLength
498 );
499
500 /**
501 Builds a Firmware Volume HOB.
502
503 This function builds a Firmware Volume HOB.
504 It can only be invoked during PEI phase;
505 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
506 If there is no additional space for HOB creation, then ASSERT().
507
508 @param BaseAddress The base address of the Firmware Volume.
509 @param Length The size of the Firmware Volume in bytes.
510
511 **/
512 VOID
513 EFIAPI
514 BuildFvHob (
515 IN EFI_PHYSICAL_ADDRESS BaseAddress,
516 IN UINT64 Length
517 );
518
519 /**
520 Builds a Firmware Volume HOB and a resrouce descriptor hob
521
522 This function builds a Firmware Volume HOB.
523 It can only be invoked during PEI phase;
524 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
525 If there is no additional space for HOB creation, then ASSERT().
526
527 @param BaseAddress The base address of the Firmware Volume.
528 @param Length The size of the Firmware Volume in bytes.
529
530 **/
531 VOID
532 EFIAPI
533 BuildFvHobs (
534 IN EFI_PHYSICAL_ADDRESS PhysicalStart,
535 IN UINT64 NumberOfBytes,
536 IN EFI_RESOURCE_ATTRIBUTE_TYPE *ResourceAttribute OPTIONAL
537 );
538
539
540 /**
541 Builds a EFI_HOB_TYPE_FV2 HOB.
542
543 This function builds a EFI_HOB_TYPE_FV2 HOB.
544 It can only be invoked during PEI phase;
545 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
546 If there is no additional space for HOB creation, then ASSERT().
547
548 @param BaseAddress The base address of the Firmware Volume.
549 @param Length The size of the Firmware Volume in bytes.
550 @param FvName The name of the Firmware Volume.
551 @param FileName The name of the file.
552
553 **/
554 VOID
555 EFIAPI
556 BuildFv2Hob (
557 IN EFI_PHYSICAL_ADDRESS BaseAddress,
558 IN UINT64 Length,
559 IN CONST EFI_GUID *FvName,
560 IN CONST EFI_GUID *FileName
561 );
562
563 /**
564 Builds a Capsule Volume HOB.
565
566 This function builds a Capsule Volume HOB.
567 It can only be invoked during PEI phase;
568 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
569 If there is no additional space for HOB creation, then ASSERT().
570
571 @param BaseAddress The base address of the Capsule Volume.
572 @param Length The size of the Capsule Volume in bytes.
573
574 **/
575 VOID
576 EFIAPI
577 BuildCvHob (
578 IN EFI_PHYSICAL_ADDRESS BaseAddress,
579 IN UINT64 Length
580 );
581
582 /**
583 Builds a HOB for the CPU.
584
585 This function builds a HOB for the CPU.
586 It can only be invoked during PEI phase;
587 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
588 If there is no additional space for HOB creation, then ASSERT().
589
590 @param SizeOfMemorySpace The maximum physical memory addressability of the processor.
591 @param SizeOfIoSpace The maximum physical I/O addressability of the processor.
592
593 **/
594 VOID
595 EFIAPI
596 BuildCpuHob (
597 IN UINT8 SizeOfMemorySpace,
598 IN UINT8 SizeOfIoSpace
599 );
600
601 /**
602 Builds a HOB for the Stack.
603
604 This function builds a HOB for the stack.
605 It can only be invoked during PEI phase;
606 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
607 If there is no additional space for HOB creation, then ASSERT().
608
609 @param BaseAddress The 64 bit physical address of the Stack.
610 @param Length The length of the stack in bytes.
611
612 **/
613 VOID
614 EFIAPI
615 BuildStackHob (
616 IN EFI_PHYSICAL_ADDRESS BaseAddress,
617 IN UINT64 Length
618 );
619
620 /**
621 Update the Stack Hob if the stack has been moved
622
623 @param BaseAddress The 64 bit physical address of the Stack.
624 @param Length The length of the stack in bytes.
625
626 **/
627 VOID
628 UpdateStackHob (
629 IN EFI_PHYSICAL_ADDRESS BaseAddress,
630 IN UINT64 Length
631 );
632
633
634 /**
635 Builds a HOB for the BSP store.
636
637 This function builds a HOB for BSP store.
638 It can only be invoked during PEI phase;
639 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
640 If there is no additional space for HOB creation, then ASSERT().
641
642 @param BaseAddress The 64 bit physical address of the BSP.
643 @param Length The length of the BSP store in bytes.
644 @param MemoryType Type of memory allocated by this HOB.
645
646 **/
647 VOID
648 EFIAPI
649 BuildBspStoreHob (
650 IN EFI_PHYSICAL_ADDRESS BaseAddress,
651 IN UINT64 Length,
652 IN EFI_MEMORY_TYPE MemoryType
653 );
654
655 /**
656 Builds a HOB for the memory allocation.
657
658 This function builds a HOB for the memory allocation.
659 It can only be invoked during PEI phase;
660 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
661 If there is no additional space for HOB creation, then ASSERT().
662
663 @param BaseAddress The 64 bit physical address of the memory.
664 @param Length The length of the memory allocation in bytes.
665 @param MemoryType Type of memory allocated by this HOB.
666
667 **/
668 VOID
669 EFIAPI
670 BuildMemoryAllocationHob (
671 IN EFI_PHYSICAL_ADDRESS BaseAddress,
672 IN UINT64 Length,
673 IN EFI_MEMORY_TYPE MemoryType
674 );
675
676
677 VOID
678 EFIAPI
679 BuildExtractSectionHob (
680 IN EFI_GUID *Guid,
681 IN EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER SectionGetInfo,
682 IN EXTRACT_GUIDED_SECTION_DECODE_HANDLER SectionExtraction
683 );
684
685 VOID
686 EFIAPI
687 BuildPeCoffLoaderHob (
688 VOID
689 );
690
691
692 /**
693 Allocates one or more 4KB pages of type EfiBootServicesData.
694
695 Allocates the number of 4KB pages of MemoryType and returns a pointer to the
696 allocated buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL
697 is returned. If there is not enough memory remaining to satisfy the request, then NULL is
698 returned.
699
700 @param Pages The number of 4 KB pages to allocate.
701
702 @return A pointer to the allocated buffer or NULL if allocation fails.
703
704 **/
705 VOID *
706 EFIAPI
707 AllocatePages (
708 IN UINTN Pages
709 );
710
711 /**
712 Allocates a buffer of type EfiBootServicesData.
713
714 Allocates the number bytes specified by AllocationSize of type EfiBootServicesData and returns a
715 pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is
716 returned. If there is not enough memory remaining to satisfy the request, then NULL is returned.
717
718 @param AllocationSize The number of bytes to allocate.
719
720 @return A pointer to the allocated buffer or NULL if allocation fails.
721
722 **/
723 VOID *
724 EFIAPI
725 AllocatePool (
726 IN UINTN AllocationSize
727 );
728
729
730 /**
731 Allocates one or more 4KB pages of type EfiBootServicesData at a specified alignment.
732
733 Allocates the number of 4KB pages specified by Pages of type EfiBootServicesData with an
734 alignment specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is
735 returned. If there is not enough memory at the specified alignment remaining to satisfy the
736 request, then NULL is returned.
737 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
738
739 @param Pages The number of 4 KB pages to allocate.
740 @param Alignment The requested alignment of the allocation. Must be a power of two.
741 If Alignment is zero, then byte alignment is used.
742
743 @return A pointer to the allocated buffer or NULL if allocation fails.
744
745 **/
746 VOID *
747 EFIAPI
748 AllocateAlignedPages (
749 IN UINTN Pages,
750 IN UINTN Alignment
751 );
752
753
754 EFI_STATUS
755 EFIAPI
756 LoadPeCoffImage (
757 IN VOID *PeCoffImage,
758 OUT EFI_PHYSICAL_ADDRESS *ImageAddress,
759 OUT UINT64 *ImageSize,
760 OUT EFI_PHYSICAL_ADDRESS *EntryPoint
761 );
762
763 EFI_STATUS
764 EFIAPI
765 LoadDxeCoreFromFfsFile (
766 IN EFI_PEI_FILE_HANDLE FileHandle,
767 IN UINTN StackSize
768 );
769
770 EFI_STATUS
771 EFIAPI
772 LoadDxeCoreFromFv (
773 IN UINTN *FvInstance, OPTIONAL
774 IN UINTN StackSize
775 );
776
777 EFI_STATUS
778 EFIAPI
779 DecompressFirstFv (
780 VOID
781 );
782
783 VOID
784 EFIAPI
785 AddDxeCoreReportStatusCodeCallback (
786 VOID
787 );
788
789
790 #endif