/* SPDX-License-Identifier: GPL-2.0-only */ /* This file is part of the coreboot project. */ #ifndef RMODULE_DEFS_H #define RMODULE_DEFS_H #include #include #define RMODULE_MAGIC 0xf8fe #define RMODULE_VERSION_1 1 /* All fields with '_offset' in the name are byte offsets into the flat blob. * The linker and the linker script takes are of assigning the values. */ struct rmodule_header { uint16_t magic; uint8_t version; uint8_t type; /* The payload represents the program's loadable code and data. */ uint32_t payload_begin_offset; uint32_t payload_end_offset; /* Begin and of relocation information about the program module. */ uint32_t relocations_begin_offset; uint32_t relocations_end_offset; /* The starting address of the linked program. This address is vital * for determining relocation offsets as the relocation info and other * symbols (bss, entry point) need this value as a basis to calculate * the offsets. */ uint32_t module_link_start_address; /* The module_program_size is the size of memory used while running * the program. The program is assumed to consume a contiguous amount * of memory. */ uint32_t module_program_size; /* This is program's execution entry point. */ uint32_t module_entry_point; /* Optional parameter structure that can be used to pass data into * the module. */ uint32_t parameters_begin; uint32_t parameters_end; /* BSS section information so the loader can clear the bss. */ uint32_t bss_begin; uint32_t bss_end; /* Add some room for growth. */ uint32_t padding[4]; } __packed; #endif /* RMODULE_DEFS_H */