647cd0cb7eb4879b11a06d2bf482174b01436c90
[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 All rights reserved. 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
271 /**
272 Retrieves the magic value from the PE/COFF header.
273
274 @param Hdr The buffer in which to return the PE32, PE32+, or TE header.
275
276 @return EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC - Image is PE32
277 @return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC - Image is PE32+
278
279 **/
280 VOID
281 CreateHobList (
282 IN VOID *MemoryBegin,
283 IN UINTN MemoryLength,
284 IN VOID *HobBase,
285 IN VOID *StackBase
286 );
287
288
289 /**
290 This service enables PEIMs to create various types of HOBs.
291
292 @param Type The type of HOB to be installed.
293 @param Length The length of the HOB to be added.
294
295 @retval !NULL The HOB was successfully created.
296 @retval NULL There is no additional space for HOB creation.
297
298 **/
299 VOID *
300 CreateHob (
301 IN UINT16 HobType,
302 IN UINT16 HobLenght
303 );
304
305
306 /**
307 Returns the next instance of a HOB type from the starting HOB.
308
309 This function searches the first instance of a HOB type from the starting HOB pointer.
310 If there does not exist such HOB type from the starting HOB pointer, it will return NULL.
311 In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
312 unconditionally: it returns HobStart back if HobStart itself meets the requirement;
313 caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
314 If HobStart is NULL, then ASSERT().
315
316 @param Type The HOB type to return.
317 @param HobStart The starting HOB pointer to search from.
318
319 @return The next instance of a HOB type from the starting HOB.
320
321 **/
322 VOID *
323 EFIAPI
324 GetNextHob (
325 IN UINT16 Type,
326 IN CONST VOID *HobStart
327 );
328
329 /**
330 Returns the first instance of a HOB type among the whole HOB list.
331
332 This function searches the first instance of a HOB type among the whole HOB list.
333 If there does not exist such HOB type in the HOB list, it will return NULL.
334
335 @param Type The HOB type to return.
336
337 @return The next instance of a HOB type from the starting HOB.
338
339 **/
340 VOID *
341 EFIAPI
342 GetFirstHob (
343 IN UINT16 Type
344 );
345
346 /**
347 This function searches the first instance of a HOB from the starting HOB pointer.
348 Such HOB should satisfy two conditions:
349 its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
350 If there does not exist such HOB from the starting HOB pointer, it will return NULL.
351 Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
352 to extract the data section and its size info respectively.
353 In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer
354 unconditionally: it returns HobStart back if HobStart itself meets the requirement;
355 caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart.
356 If Guid is NULL, then ASSERT().
357 If HobStart is NULL, then ASSERT().
358
359 @param Guid The GUID to match with in the HOB list.
360 @param HobStart A pointer to a Guid.
361
362 @return The next instance of the matched GUID HOB from the starting HOB.
363
364 **/
365 VOID *
366 EFIAPI
367 GetNextGuidHob (
368 IN CONST EFI_GUID *Guid,
369 IN CONST VOID *HobStart
370 );
371
372 /**
373 This function searches the first instance of a HOB among the whole HOB list.
374 Such HOB should satisfy two conditions:
375 its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid.
376 If there does not exist such HOB from the starting HOB pointer, it will return NULL.
377 Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE ()
378 to extract the data section and its size info respectively.
379 If Guid is NULL, then ASSERT().
380
381 @param Guid The GUID to match with in the HOB list.
382
383 @return The first instance of the matched GUID HOB among the whole HOB list.
384
385 **/
386 VOID *
387 EFIAPI
388 GetFirstGuidHob (
389 IN CONST EFI_GUID *Guid
390 );
391
392
393 /**
394 Builds a HOB for a loaded PE32 module.
395
396 This function builds a HOB for a loaded PE32 module.
397 It can only be invoked during PEI phase;
398 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
399 If ModuleName is NULL, then ASSERT().
400 If there is no additional space for HOB creation, then ASSERT().
401
402 @param ModuleName The GUID File Name of the module.
403 @param MemoryAllocationModule The 64 bit physical address of the module.
404 @param ModuleLength The length of the module in bytes.
405 @param EntryPoint The 64 bit physical address of the module entry point.
406
407 **/
408 VOID
409 EFIAPI
410 BuildModuleHob (
411 IN CONST EFI_GUID *ModuleName,
412 IN EFI_PHYSICAL_ADDRESS MemoryAllocationModule,
413 IN UINT64 ModuleLength,
414 IN EFI_PHYSICAL_ADDRESS EntryPoint
415 );
416
417 /**
418 Builds a HOB that describes a chunk of system memory.
419
420 This function builds a HOB that describes a chunk of system memory.
421 It can only be invoked during PEI phase;
422 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
423 If there is no additional space for HOB creation, then ASSERT().
424
425 @param ResourceType The type of resource described by this HOB.
426 @param ResourceAttribute The resource attributes of the memory described by this HOB.
427 @param PhysicalStart The 64 bit physical address of memory described by this HOB.
428 @param NumberOfBytes The length of the memory described by this HOB in bytes.
429
430 **/
431 VOID
432 EFIAPI
433 BuildResourceDescriptorHob (
434 IN EFI_RESOURCE_TYPE ResourceType,
435 IN EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute,
436 IN EFI_PHYSICAL_ADDRESS PhysicalStart,
437 IN UINT64 NumberOfBytes
438 );
439
440 /**
441 Builds a GUID HOB with a certain data length.
442
443 This function builds a customized HOB tagged with a GUID for identification
444 and returns the start address of GUID HOB data so that caller can fill the customized data.
445 The HOB Header and Name field is already stripped.
446 It can only be invoked during PEI phase;
447 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
448 If Guid is NULL, then ASSERT().
449 If there is no additional space for HOB creation, then ASSERT().
450 If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
451
452 @param Guid The GUID to tag the customized HOB.
453 @param DataLength The size of the data payload for the GUID HOB.
454
455 @return The start address of GUID HOB data.
456
457 **/
458 VOID *
459 EFIAPI
460 BuildGuidHob (
461 IN CONST EFI_GUID *Guid,
462 IN UINTN DataLength
463 );
464
465 /**
466 Copies a data buffer to a newly-built HOB.
467
468 This function builds a customized HOB tagged with a GUID for identification,
469 copies the input data to the HOB data field and returns the start address of the GUID HOB data.
470 The HOB Header and Name field is already stripped.
471 It can only be invoked during PEI phase;
472 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
473 If Guid is NULL, then ASSERT().
474 If Data is NULL and DataLength > 0, then ASSERT().
475 If there is no additional space for HOB creation, then ASSERT().
476 If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
477
478 @param Guid The GUID to tag the customized HOB.
479 @param Data The data to be copied into the data field of the GUID HOB.
480 @param DataLength The size of the data payload for the GUID HOB.
481
482 @return The start address of GUID HOB data.
483
484 **/
485 VOID *
486 EFIAPI
487 BuildGuidDataHob (
488 IN CONST EFI_GUID *Guid,
489 IN VOID *Data,
490 IN UINTN DataLength
491 );
492
493 /**
494 Builds a Firmware Volume HOB.
495
496 This function builds a Firmware Volume HOB.
497 It can only be invoked during PEI phase;
498 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
499 If there is no additional space for HOB creation, then ASSERT().
500
501 @param BaseAddress The base address of the Firmware Volume.
502 @param Length The size of the Firmware Volume in bytes.
503
504 **/
505 VOID
506 EFIAPI
507 BuildFvHob (
508 IN EFI_PHYSICAL_ADDRESS BaseAddress,
509 IN UINT64 Length
510 );
511
512 /**
513 Builds a Firmware Volume HOB and a resrouce descriptor hob
514
515 This function builds a Firmware Volume HOB.
516 It can only be invoked during PEI phase;
517 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
518 If there is no additional space for HOB creation, then ASSERT().
519
520 @param BaseAddress The base address of the Firmware Volume.
521 @param Length The size of the Firmware Volume in bytes.
522
523 **/
524 VOID
525 EFIAPI
526 BuildFvHobs (
527 IN EFI_PHYSICAL_ADDRESS PhysicalStart,
528 IN UINT64 NumberOfBytes,
529 IN EFI_RESOURCE_ATTRIBUTE_TYPE *ResourceAttribute OPTIONAL
530 );
531
532
533 /**
534 Builds a EFI_HOB_TYPE_FV2 HOB.
535
536 This function builds a EFI_HOB_TYPE_FV2 HOB.
537 It can only be invoked during PEI phase;
538 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
539 If there is no additional space for HOB creation, then ASSERT().
540
541 @param BaseAddress The base address of the Firmware Volume.
542 @param Length The size of the Firmware Volume in bytes.
543 @param FvName The name of the Firmware Volume.
544 @param FileName The name of the file.
545
546 **/
547 VOID
548 EFIAPI
549 BuildFv2Hob (
550 IN EFI_PHYSICAL_ADDRESS BaseAddress,
551 IN UINT64 Length,
552 IN CONST EFI_GUID *FvName,
553 IN CONST EFI_GUID *FileName
554 );
555
556 /**
557 Builds a Capsule Volume HOB.
558
559 This function builds a Capsule Volume HOB.
560 It can only be invoked during PEI phase;
561 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
562 If there is no additional space for HOB creation, then ASSERT().
563
564 @param BaseAddress The base address of the Capsule Volume.
565 @param Length The size of the Capsule Volume in bytes.
566
567 **/
568 VOID
569 EFIAPI
570 BuildCvHob (
571 IN EFI_PHYSICAL_ADDRESS BaseAddress,
572 IN UINT64 Length
573 );
574
575 /**
576 Builds a HOB for the CPU.
577
578 This function builds a HOB for the CPU.
579 It can only be invoked during PEI phase;
580 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
581 If there is no additional space for HOB creation, then ASSERT().
582
583 @param SizeOfMemorySpace The maximum physical memory addressability of the processor.
584 @param SizeOfIoSpace The maximum physical I/O addressability of the processor.
585
586 **/
587 VOID
588 EFIAPI
589 BuildCpuHob (
590 IN UINT8 SizeOfMemorySpace,
591 IN UINT8 SizeOfIoSpace
592 );
593
594 /**
595 Builds a HOB for the Stack.
596
597 This function builds a HOB for the stack.
598 It can only be invoked during PEI phase;
599 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
600 If there is no additional space for HOB creation, then ASSERT().
601
602 @param BaseAddress The 64 bit physical address of the Stack.
603 @param Length The length of the stack in bytes.
604
605 **/
606 VOID
607 EFIAPI
608 BuildStackHob (
609 IN EFI_PHYSICAL_ADDRESS BaseAddress,
610 IN UINT64 Length
611 );
612
613 /**
614 Update the Stack Hob if the stack has been moved
615
616 @param BaseAddress The 64 bit physical address of the Stack.
617 @param Length The length of the stack in bytes.
618
619 **/
620 VOID
621 UpdateStackHob (
622 IN EFI_PHYSICAL_ADDRESS BaseAddress,
623 IN UINT64 Length
624 );
625
626
627 /**
628 Builds a HOB for the BSP store.
629
630 This function builds a HOB for BSP store.
631 It can only be invoked during PEI phase;
632 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
633 If there is no additional space for HOB creation, then ASSERT().
634
635 @param BaseAddress The 64 bit physical address of the BSP.
636 @param Length The length of the BSP store in bytes.
637 @param MemoryType Type of memory allocated by this HOB.
638
639 **/
640 VOID
641 EFIAPI
642 BuildBspStoreHob (
643 IN EFI_PHYSICAL_ADDRESS BaseAddress,
644 IN UINT64 Length,
645 IN EFI_MEMORY_TYPE MemoryType
646 );
647
648 /**
649 Builds a HOB for the memory allocation.
650
651 This function builds a HOB for the memory allocation.
652 It can only be invoked during PEI phase;
653 for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
654 If there is no additional space for HOB creation, then ASSERT().
655
656 @param BaseAddress The 64 bit physical address of the memory.
657 @param Length The length of the memory allocation in bytes.
658 @param MemoryType Type of memory allocated by this HOB.
659
660 **/
661 VOID
662 EFIAPI
663 BuildMemoryAllocationHob (
664 IN EFI_PHYSICAL_ADDRESS BaseAddress,
665 IN UINT64 Length,
666 IN EFI_MEMORY_TYPE MemoryType
667 );
668
669
670 VOID
671 EFIAPI
672 BuildExtractSectionHob (
673 IN EFI_GUID *Guid,
674 IN EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER SectionGetInfo,
675 IN EXTRACT_GUIDED_SECTION_DECODE_HANDLER SectionExtraction
676 );
677
678 VOID
679 EFIAPI
680 BuildPeCoffLoaderHob (
681 VOID
682 );
683
684
685 /**
686 Allocates one or more 4KB pages of type EfiBootServicesData.
687
688 Allocates the number of 4KB pages of MemoryType and returns a pointer to the
689 allocated buffer. The buffer returned is aligned on a 4KB boundary. If Pages is 0, then NULL
690 is returned. If there is not enough memory remaining to satisfy the request, then NULL is
691 returned.
692
693 @param Pages The number of 4 KB pages to allocate.
694
695 @return A pointer to the allocated buffer or NULL if allocation fails.
696
697 **/
698 VOID *
699 EFIAPI
700 AllocatePages (
701 IN UINTN Pages
702 );
703
704 /**
705 Allocates a buffer of type EfiBootServicesData.
706
707 Allocates the number bytes specified by AllocationSize of type EfiBootServicesData and returns a
708 pointer to the allocated buffer. If AllocationSize is 0, then a valid buffer of 0 size is
709 returned. If there is not enough memory remaining to satisfy the request, then NULL is returned.
710
711 @param AllocationSize The number of bytes to allocate.
712
713 @return A pointer to the allocated buffer or NULL if allocation fails.
714
715 **/
716 VOID *
717 EFIAPI
718 AllocatePool (
719 IN UINTN AllocationSize
720 );
721
722
723 /**
724 Allocates one or more 4KB pages of type EfiBootServicesData at a specified alignment.
725
726 Allocates the number of 4KB pages specified by Pages of type EfiBootServicesData with an
727 alignment specified by Alignment. The allocated buffer is returned. If Pages is 0, then NULL is
728 returned. If there is not enough memory at the specified alignment remaining to satisfy the
729 request, then NULL is returned.
730 If Alignment is not a power of two and Alignment is not zero, then ASSERT().
731
732 @param Pages The number of 4 KB pages to allocate.
733 @param Alignment The requested alignment of the allocation. Must be a power of two.
734 If Alignment is zero, then byte alignment is used.
735
736 @return A pointer to the allocated buffer or NULL if allocation fails.
737
738 **/
739 VOID *
740 EFIAPI
741 AllocateAlignedPages (
742 IN UINTN Pages,
743 IN UINTN Alignment
744 );
745
746
747 EFI_STATUS
748 EFIAPI
749 LoadPeCoffImage (
750 IN VOID *PeCoffImage,
751 OUT EFI_PHYSICAL_ADDRESS *ImageAddress,
752 OUT UINT64 *ImageSize,
753 OUT EFI_PHYSICAL_ADDRESS *EntryPoint
754 );
755
756 EFI_STATUS
757 EFIAPI
758 LoadDxeCoreFromFfsFile (
759 IN EFI_PEI_FILE_HANDLE FileHandle,
760 IN UINTN StackSize
761 );
762
763 EFI_STATUS
764 EFIAPI
765 LoadDxeCoreFromFv (
766 IN UINTN *FvInstance, OPTIONAL
767 IN UINTN StackSize
768 );
769
770 EFI_STATUS
771 EFIAPI
772 DecompressFirstFv (
773 VOID
774 );
775
776 VOID
777 EFIAPI
778 AddDxeCoreReportStatusCodeCallback (
779 VOID
780 );
781
782
783 #endif