diff options
author | Song Gao <gaosong@loongson.cn> | 2024-04-26 17:15:39 +0800 |
---|---|---|
committer | Song Gao <gaosong@loongson.cn> | 2024-04-29 10:25:56 +0800 |
commit | 4216baa90da53f9c53d0a9de264450040423ede0 (patch) | |
tree | 2eea9b62d984991d5bb043ba23abee24cbef0f09 /include/hw/loongarch | |
parent | 58ee60d2d29437d1ddb02640a12a3f028307594c (diff) | |
download | qemu-4216baa90da53f9c53d0a9de264450040423ede0.zip qemu-4216baa90da53f9c53d0a9de264450040423ede0.tar.gz qemu-4216baa90da53f9c53d0a9de264450040423ede0.tar.bz2 |
hw/loongarch: Init efi_system_table
Add init_systab and set boot_info->a2
Signed-off-by: Song Gao <gaosong@loongson.cn>
Reviewed-by: Bibo Mao <maobibo@loongson.cn>
Message-Id: <20240426091551.2397867-6-gaosong@loongson.cn>
Diffstat (limited to 'include/hw/loongarch')
-rw-r--r-- | include/hw/loongarch/boot.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/include/hw/loongarch/boot.h b/include/hw/loongarch/boot.h index 3275c1e..cf0e4d4 100644 --- a/include/hw/loongarch/boot.h +++ b/include/hw/loongarch/boot.h @@ -8,6 +8,54 @@ #ifndef HW_LOONGARCH_BOOT_H #define HW_LOONGARCH_BOOT_H +/* UEFI 2.10 */ +#define EFI_SYSTEM_TABLE_SIGNATURE 0x5453595320494249 +#define EFI_2_100_SYSTEM_TABLE_REVISION ((2<<16) | (100)) +#define EFI_SPECIFICATION_VERSION EFI_SYSTEM_TABLE_REVISION +#define EFI_SYSTEM_TABLE_REVISION EFI_2_100_SYSTEM_TABLE_REVISION + +#define FW_VERSION 0x1 +#define FW_PATCHLEVEL 0x0 + +typedef struct { + uint8_t b[16]; +} efi_guid_t QEMU_ALIGNED(8); + +struct efi_config_table { + efi_guid_t guid; + uint64_t *ptr; + const char name[16]; +}; + +typedef struct { + uint64_t signature; + uint32_t revision; + uint32_t headersize; + uint32_t crc32; + uint32_t reserved; +} efi_table_hdr_t; + +struct efi_configuration_table { + efi_guid_t guid; + void *table; +}; + +struct efi_system_table { + efi_table_hdr_t hdr; + uint64_t fw_vendor; /* physical addr of CHAR16 vendor string */ + uint32_t fw_revision; + uint64_t con_in_handle; + uint64_t *con_in; + uint64_t con_out_handle; + uint64_t *con_out; + uint64_t stderr_handle; + uint64_t stderr_placeholder; + uint64_t *runtime; + uint64_t *boottime; + uint64_t nr_tables; + struct efi_configuration_table *tables; +}; + struct loongarch_boot_info { uint64_t ram_size; const char *kernel_filename; |