| /** @file | |
| Universal Payload general definitions. | |
| Copyright (c) 2021, Intel Corporation. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| @par Revision Reference: | |
| - Universal Payload Specification 0.75 (https://universalpayload.github.io/documentation/) | |
| **/ | |
| #ifndef UNIVERSAL_PAYLOAD_H_ | |
| #define UNIVERSAL_PAYLOAD_H_ | |
| /** | |
| Main entry point to Universal Payload. | |
| @param HobList Pointer to the beginning of the HOB List from boot loader. | |
| **/ | |
| typedef VOID (EFIAPI *UNIVERSAL_PAYLOAD_ENTRY)(VOID *HobList); | |
| #define UNIVERSAL_PAYLOAD_IDENTIFIER SIGNATURE_32('P', 'L', 'D', 'H') | |
| #define UNIVERSAL_PAYLOAD_INFO_SEC_NAME ".upld_info" | |
| #define UNIVERSAL_PAYLOAD_EXTRA_SEC_NAME_PREFIX ".upld." | |
| #define UNIVERSAL_PAYLOAD_EXTRA_SEC_NAME_PREFIX_LENGTH (sizeof (UNIVERSAL_PAYLOAD_EXTRA_SEC_NAME_PREFIX) - 1) | |
| #pragma pack(1) | |
| typedef struct { | |
| UINT32 Identifier; | |
| UINT32 HeaderLength; | |
| UINT16 SpecRevision; | |
| UINT8 Reserved[2]; | |
| UINT32 Revision; | |
| UINT32 Attribute; | |
| UINT32 Capability; | |
| CHAR8 ProducerId[16]; | |
| CHAR8 ImageId[16]; | |
| } UNIVERSAL_PAYLOAD_INFO_HEADER; | |
| typedef struct { | |
| UINT8 Revision; | |
| UINT8 Reserved; | |
| UINT16 Length; | |
| } UNIVERSAL_PAYLOAD_GENERIC_HEADER; | |
| #pragma pack() | |
| /** | |
| Returns the size of a structure of known type, up through and including a specified field. | |
| @param TYPE The name of the data structure that contains the field specified by Field. | |
| @param Field The name of the field in the data structure. | |
| @return size, in bytes. | |
| **/ | |
| #define UNIVERSAL_PAYLOAD_SIZEOF_THROUGH_FIELD(TYPE, Field) (OFFSET_OF(TYPE, Field) + sizeof (((TYPE *) 0)->Field)) | |
| #endif // UNIVERSAL_PAYLOAD_H_ |