summaryrefslogtreecommitdiffstats
path: root/arch/x86/boot/compressed/eboot.h
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2014-01-10 16:27:14 +0100
committerMatt Fleming <matt.fleming@intel.com>2014-03-04 22:25:03 +0100
commit54b52d87268034859191d671505bb1cfce6bd74d (patch)
tree63c39b9a828e9d6dad97118cbd2e1e1210da6358 /arch/x86/boot/compressed/eboot.h
parentefi: Add separate 32-bit/64-bit definitions (diff)
downloadlinux-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.h16
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 */