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