diff options
author | Matt Fleming <matt.fleming@intel.com> | 2014-01-10 16:27:14 +0100 |
---|---|---|
committer | Matt Fleming <matt.fleming@intel.com> | 2014-03-04 22:25:03 +0100 |
commit | 54b52d87268034859191d671505bb1cfce6bd74d (patch) | |
tree | 63c39b9a828e9d6dad97118cbd2e1e1210da6358 /arch/x86/boot/compressed/eboot.h | |
parent | efi: Add separate 32-bit/64-bit definitions (diff) | |
download | linux-54b52d87268034859191d671505bb1cfce6bd74d.tar.xz linux-54b52d87268034859191d671505bb1cfce6bd74d.zip |
x86/efi: Build our own EFI services pointer table
It's not possible to dereference the EFI System table directly when
booting a 64-bit kernel on a 32-bit EFI firmware because the size of
pointers don't match.
In preparation for supporting the above use case, build a list of
function pointers on boot so that callers don't have to worry about
converting pointer sizes through multiple levels of indirection.
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Diffstat (limited to 'arch/x86/boot/compressed/eboot.h')
-rw-r--r-- | arch/x86/boot/compressed/eboot.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/x86/boot/compressed/eboot.h b/arch/x86/boot/compressed/eboot.h index d487e727f1ec..c88c31ecad12 100644 --- a/arch/x86/boot/compressed/eboot.h +++ b/arch/x86/boot/compressed/eboot.h @@ -103,4 +103,20 @@ struct efi_uga_draw_protocol { void *blt; }; +struct efi_config { + u64 image_handle; + u64 table; + u64 allocate_pool; + u64 allocate_pages; + u64 get_memory_map; + u64 free_pool; + u64 free_pages; + u64 locate_handle; + u64 handle_protocol; + u64 exit_boot_services; + u64 text_output; + efi_status_t (*call)(unsigned long, ...); + bool is64; +} __packed; + #endif /* BOOT_COMPRESSED_EBOOT_H */ |