123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- /** @file
- Copyright (c) 2021, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef __UEFI_PAYLOAD_ENTRY_H__
- #define __UEFI_PAYLOAD_ENTRY_H__
- #include <PiPei.h>
- #include <Library/BaseLib.h>
- #include <Library/BaseMemoryLib.h>
- #include <Library/MemoryAllocationLib.h>
- #include <Library/DebugLib.h>
- #include <Library/PeCoffLib.h>
- #include <Library/HobLib.h>
- #include <Library/PcdLib.h>
- #include <Guid/MemoryAllocationHob.h>
- #include <Library/IoLib.h>
- #include <Library/PeCoffLib.h>
- #include <Library/BlParseLib.h>
- #include <Library/PlatformSupportLib.h>
- #include <Library/CpuLib.h>
- #include <Library/UefiCpuLib.h>
- #include <IndustryStandard/Acpi.h>
- #include <IndustryStandard/MemoryMappedConfigurationSpaceAccessTable.h>
- #include <Guid/SerialPortInfoGuid.h>
- #include <Guid/MemoryMapInfoGuid.h>
- #include <Guid/AcpiBoardInfoGuid.h>
- #include <Guid/GraphicsInfoHob.h>
- #include <UniversalPayload/SmbiosTable.h>
- #include <UniversalPayload/AcpiTable.h>
- #include <UniversalPayload/UniversalPayload.h>
- #include <UniversalPayload/ExtraData.h>
- #include <UniversalPayload/SerialPortInfo.h>
- #include <Guid/PcdDataBaseSignatureGuid.h>
- #define LEGACY_8259_MASK_REGISTER_MASTER 0x21
- #define LEGACY_8259_MASK_REGISTER_SLAVE 0xA1
- #define GET_OCCUPIED_SIZE(ActualSize, Alignment) \
- ((ActualSize) + (((Alignment) - ((ActualSize) & ((Alignment) - 1))) & ((Alignment) - 1)))
- #define E820_RAM 1
- #define E820_RESERVED 2
- #define E820_ACPI 3
- #define E820_NVS 4
- #define E820_UNUSABLE 5
- #define E820_DISABLED 6
- #define E820_PMEM 7
- #define E820_UNDEFINED 8
- /**
- Auto-generated function that calls the library constructors for all of the module's
- dependent libraries.
- **/
- VOID
- EFIAPI
- ProcessLibraryConstructorList (
- VOID
- );
- /**
- Add a new HOB to the HOB List.
- @param HobType Type of the new HOB.
- @param HobLength Length of the new HOB to allocate.
- @return NULL if there is no space to create a hob.
- @return The address point to the new created hob.
- **/
- VOID *
- EFIAPI
- CreateHob (
- IN UINT16 HobType,
- IN UINT16 HobLength
- );
- /**
- Update the Stack Hob if the stack has been moved
- @param BaseAddress The 64 bit physical address of the Stack.
- @param Length The length of the stack in bytes.
- **/
- VOID
- EFIAPI
- UpdateStackHob (
- IN EFI_PHYSICAL_ADDRESS BaseAddress,
- IN UINT64 Length
- );
- /**
- Build a Handoff Information Table HOB
- This function initialize a HOB region from EfiMemoryBegin to
- EfiMemoryTop. And EfiFreeMemoryBottom and EfiFreeMemoryTop should
- be inside the HOB region.
- @param[in] EfiMemoryBottom Total memory start address
- @param[in] EfiMemoryTop Total memory end address.
- @param[in] EfiFreeMemoryBottom Free memory start address
- @param[in] EfiFreeMemoryTop Free memory end address.
- @return The pointer to the handoff HOB table.
- **/
- EFI_HOB_HANDOFF_INFO_TABLE *
- EFIAPI
- HobConstructor (
- IN VOID *EfiMemoryBottom,
- IN VOID *EfiMemoryTop,
- IN VOID *EfiFreeMemoryBottom,
- IN VOID *EfiFreeMemoryTop
- );
- /**
- Find DXE core from FV and build DXE core HOBs.
- @param[out] DxeCoreEntryPoint DXE core entry point
- @retval EFI_SUCCESS If it completed successfully.
- @retval EFI_NOT_FOUND If it failed to load DXE FV.
- **/
- EFI_STATUS
- LoadDxeCore (
- OUT PHYSICAL_ADDRESS *DxeCoreEntryPoint
- );
- /**
- Find DXE core from FV and build DXE core HOBs.
- @param[in] DxeFv The FV where to find the DXE core.
- @param[out] DxeCoreEntryPoint DXE core entry point
- @retval EFI_SUCCESS If it completed successfully.
- @retval EFI_NOT_FOUND If it failed to load DXE FV.
- **/
- EFI_STATUS
- UniversalLoadDxeCore (
- IN EFI_FIRMWARE_VOLUME_HEADER *DxeFv,
- OUT PHYSICAL_ADDRESS *DxeCoreEntryPoint
- );
- /**
- Transfers control to DxeCore.
- This function performs a CPU architecture specific operations to execute
- the entry point of DxeCore with the parameters of HobList.
- @param DxeCoreEntryPoint The entry point of DxeCore.
- @param HobList The start of HobList passed to DxeCore.
- **/
- VOID
- HandOffToDxeCore (
- IN EFI_PHYSICAL_ADDRESS DxeCoreEntryPoint,
- IN EFI_PEI_HOB_POINTERS HobList
- );
- EFI_STATUS
- FixUpPcdDatabase (
- IN EFI_FIRMWARE_VOLUME_HEADER *DxeFv
- );
- /**
- This function searchs a given section type within a valid FFS file.
- @param FileHeader A pointer to the file header that contains the set of sections to
- be searched.
- @param SearchType The value of the section type to search.
- @param SectionData A pointer to the discovered section, if successful.
- @retval EFI_SUCCESS The section was found.
- @retval EFI_NOT_FOUND The section was not found.
- **/
- EFI_STATUS
- FileFindSection (
- IN EFI_FFS_FILE_HEADER *FileHeader,
- IN EFI_SECTION_TYPE SectionType,
- OUT VOID **SectionData
- );
- /**
- This function searchs a given file type with a given Guid within a valid FV.
- If input Guid is NULL, will locate the first section having the given file type
- @param FvHeader A pointer to firmware volume header that contains the set of files
- to be searched.
- @param FileType File type to be searched.
- @param Guid Will ignore if it is NULL.
- @param FileHeader A pointer to the discovered file, if successful.
- @retval EFI_SUCCESS Successfully found FileType
- @retval EFI_NOT_FOUND File type can't be found.
- **/
- EFI_STATUS
- FvFindFileByTypeGuid (
- IN EFI_FIRMWARE_VOLUME_HEADER *FvHeader,
- IN EFI_FV_FILETYPE FileType,
- IN EFI_GUID *Guid OPTIONAL,
- OUT EFI_FFS_FILE_HEADER **FileHeader
- );
- /**
- Build ACPI board info HOB using infomation from ACPI table
- @param AcpiTableBase ACPI table start address in memory
- @retval A pointer to ACPI board HOB ACPI_BOARD_INFO. Null if build HOB failure.
- **/
- ACPI_BOARD_INFO *
- BuildHobFromAcpi (
- IN UINT64 AcpiTableBase
- );
- #endif
|