| /** @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 <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 |