1 | /** @file
|
---|
2 | FIT Load Image Support
|
---|
3 | Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
|
---|
4 | SPDX-License-Identifier: BSD-2-Clause-Patent
|
---|
5 | **/
|
---|
6 |
|
---|
7 | #ifndef FIT_LIB_H_
|
---|
8 | #define FIT_LIB_H_
|
---|
9 |
|
---|
10 | #include <PiPei.h>
|
---|
11 | #include <Library/DebugLib.h>
|
---|
12 | #include <Library/FdtLib.h>
|
---|
13 |
|
---|
14 | typedef struct {
|
---|
15 | UINT64 RelocateType;
|
---|
16 | UINT64 Offset;
|
---|
17 | } FIT_RELOCATE_ITEM;
|
---|
18 |
|
---|
19 | typedef struct {
|
---|
20 | EFI_PHYSICAL_ADDRESS ImageBase;
|
---|
21 | EFI_PHYSICAL_ADDRESS PayloadBaseAddress;
|
---|
22 | UINT64 PayloadSize;
|
---|
23 | UINTN PayloadEntryOffset;
|
---|
24 | UINTN PayloadEntrySize;
|
---|
25 | EFI_PHYSICAL_ADDRESS PayloadEntryPoint;
|
---|
26 | UINTN RelocateTableOffset;
|
---|
27 | UINTN RelocateTableCount;
|
---|
28 | EFI_PHYSICAL_ADDRESS PayloadLoadAddress;
|
---|
29 | } FIT_IMAGE_CONTEXT;
|
---|
30 |
|
---|
31 | typedef struct {
|
---|
32 | CHAR8 *Name;
|
---|
33 | UINT32 Offset;
|
---|
34 | } PROPERTY_DATA;
|
---|
35 |
|
---|
36 | #define IMAGE_BASE_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, ImageBase)
|
---|
37 | #define PAYLOAD_BASE_ADDR_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadBaseAddress)
|
---|
38 | #define PAYLOAD_BASE_SIZE_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadSize)
|
---|
39 | #define PAYLOAD_ENTRY_OFFSET_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadEntryOffset)
|
---|
40 | #define PAYLOAD_ENTRY_SIZE_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadEntrySize)
|
---|
41 | #define PAYLOAD_ENTRY_POINT_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadEntryPoint)
|
---|
42 | #define RELOCATE_TABLE_OFFSET_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, RelocateTableOffset)
|
---|
43 | #define RELOCATE_TABLE_COUNT_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, RelocateTableCount)
|
---|
44 | #define PAYLOAD_LOAD_ADDR_OFFSET OFFSET_OF (FIT_IMAGE_CONTEXT, PayloadLoadAddress)
|
---|
45 |
|
---|
46 | /**
|
---|
47 | Parse the FIT image info.
|
---|
48 | @param[in] ImageBase Memory address of an image.
|
---|
49 | @param[out] Context The FIT image context pointer.
|
---|
50 | @retval EFI_UNSUPPORTED Unsupported binary type.
|
---|
51 | @retval EFI_SUCCESS FIT binary is loaded successfully.
|
---|
52 | **/
|
---|
53 | EFI_STATUS
|
---|
54 | EFIAPI
|
---|
55 | ParseFitImage (
|
---|
56 | IN VOID *ImageBase,
|
---|
57 | OUT FIT_IMAGE_CONTEXT *Context
|
---|
58 | );
|
---|
59 |
|
---|
60 | #endif
|
---|