/** @file | |
FIT Load Image Support | |
Copyright (c) 2023, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef FIT_LIB_H_ | |
#define FIT_LIB_H_ | |
#include <PiPei.h> | |
#include <Library/DebugLib.h> | |
#include <Library/FdtLib.h> | |
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 |