efi: stub: Pass EFI system table address to U-Boot payload
This updates the EFI stub codes to pass UEFI BIOS's system table address to U-Boot payload so that U-Boot can utilize it. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
aac79251c7
commit
cbe503fbc1
@ -248,6 +248,7 @@ enum efi_entry_t {
|
|||||||
EFIET_END, /* Signals this is the last (empty) entry */
|
EFIET_END, /* Signals this is the last (empty) entry */
|
||||||
EFIET_MEMORY_MAP,
|
EFIET_MEMORY_MAP,
|
||||||
EFIET_GOP_MODE,
|
EFIET_GOP_MODE,
|
||||||
|
EFIET_SYS_TABLE,
|
||||||
|
|
||||||
/* Number of entries */
|
/* Number of entries */
|
||||||
EFIET_MEMORY_COUNT,
|
EFIET_MEMORY_COUNT,
|
||||||
@ -338,6 +339,15 @@ struct efi_entry_gopmode {
|
|||||||
} info[];
|
} info[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct efi_entry_systable - system table passed to U-Boot
|
||||||
|
*
|
||||||
|
* @sys_table: EFI system table address
|
||||||
|
*/
|
||||||
|
struct efi_entry_systable {
|
||||||
|
efi_physical_addr_t sys_table;
|
||||||
|
};
|
||||||
|
|
||||||
static inline struct efi_mem_desc *efi_get_next_mem_desc(
|
static inline struct efi_mem_desc *efi_get_next_mem_desc(
|
||||||
struct efi_entry_memmap *map, struct efi_mem_desc *desc)
|
struct efi_entry_memmap *map, struct efi_mem_desc *desc)
|
||||||
{
|
{
|
||||||
|
@ -277,6 +277,7 @@ efi_status_t EFIAPI efi_main(efi_handle_t image,
|
|||||||
struct efi_entry_memmap map;
|
struct efi_entry_memmap map;
|
||||||
struct efi_gop *gop;
|
struct efi_gop *gop;
|
||||||
struct efi_entry_gopmode mode;
|
struct efi_entry_gopmode mode;
|
||||||
|
struct efi_entry_systable table;
|
||||||
efi_guid_t efi_gop_guid = EFI_GOP_GUID;
|
efi_guid_t efi_gop_guid = EFI_GOP_GUID;
|
||||||
efi_uintn_t key, desc_size, size;
|
efi_uintn_t key, desc_size, size;
|
||||||
efi_status_t ret;
|
efi_status_t ret;
|
||||||
@ -335,6 +336,9 @@ efi_status_t EFIAPI efi_main(efi_handle_t image,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table.sys_table = (ulong)sys_table;
|
||||||
|
add_entry_addr(priv, EFIET_SYS_TABLE, &table, sizeof(table), NULL, 0);
|
||||||
|
|
||||||
ret = boot->exit_boot_services(image, key);
|
ret = boot->exit_boot_services(image, key);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user