x86/efi: Add mixed runtime services support
authorMatt Fleming <matt.fleming@intel.com>
Fri, 10 Jan 2014 18:48:30 +0000 (18:48 +0000)
committerMatt Fleming <matt.fleming@intel.com>
Tue, 4 Mar 2014 21:43:14 +0000 (21:43 +0000)
commit4f9dbcfc40299ddaa780fe8c1cd74998c1be3af5
treef6d2f85b23fae5ee8d9da79f30c47351aa890d5b
parentb8ff87a6158886771677e6dc8139bac6e3cba717
x86/efi: Add mixed runtime services support

Setup the runtime services based on whether we're booting in EFI native
mode or not. For non-native mode we need to thunk from 64-bit into
32-bit mode before invoking the EFI runtime services.

Using the runtime services after SetVirtualAddressMap() is slightly more
complicated because we need to ensure that all the addresses we pass to
the firmware are below the 4GB boundary so that they can be addressed
with 32-bit pointers, see efi_setup_page_tables().

Signed-off-by: Matt Fleming <matt.fleming@intel.com>
arch/x86/include/asm/efi.h
arch/x86/platform/efi/Makefile
arch/x86/platform/efi/efi.c
arch/x86/platform/efi/efi_64.c
arch/x86/platform/efi/efi_stub_64.S
arch/x86/platform/efi/efi_thunk_64.S [new file with mode: 0644]