/** @file FIT Load Image Support Copyright (c) 2023, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef FIT_LIB_H_ #define FIT_LIB_H_ #include #include #include typedef struct { UINT64 RelocateType; UINT64 Offset; } FIT_RELOCATE_ITEM; typedef struct { EFI_PHYSICAL_ADDRESS ImageBase; EFI_PHYSICAL_ADDRESS PayloadBaseAddress; UINT64 PayloadSize; UINTN PayloadEntryOffset; UINTN PayloadEntrySize; EFI_PHYSICAL_ADDRESS PayloadEntryPoint; UINTN RelocateTableOffset; UINTN RelocateTableCount; EFI_PHYSICAL_ADDRESS PayloadLoadAddress; } FIT_IMAGE_CONTEXT; typedef struct { CHAR8 *Name; UINT32 Offset; } PROPERTY_DATA; #define IMAGE_BASE_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, ImageBase) #define PAYLOAD_BASE_ADDR_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadBaseAddress) #define PAYLOAD_BASE_SIZE_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadSize) #define PAYLOAD_ENTRY_OFFSET_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadEntryOffset) #define PAYLOAD_ENTRY_SIZE_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadEntrySize) #define PAYLOAD_ENTRY_POINT_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadEntryPoint) #define RELOCATE_TABLE_OFFSET_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, RelocateTableOffset) #define RELOCATE_TABLE_COUNT_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, RelocateTableCount) #define PAYLOAD_LOAD_ADDR_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadLoadAddress) /** Parse the FIT image info. @param[in] ImageBase Memory address of an image. @param[out] Context The FIT image context pointer. @retval EFI_UNSUPPORTED Unsupported binary type. @retval EFI_SUCCESS FIT binary is loaded successfully. **/ EFI_STATUS EFIAPI ParseFitImage ( IN VOID *ImageBase, OUT FIT_IMAGE_CONTEXT *Context ); #endif