
On 5 August 2015 at 02:02, Bin Meng bmeng.cn@gmail.com wrote:
On Wed, Aug 5, 2015 at 2:33 AM, Simon Glass sjg@chromium.org wrote:
Most EFI implementations use 64-bit. Add a way to build U-Boot as a 64-bit EFI payload. The payload unpacks a (32-bit) U-Boot and starts it. This can be enabled for x86 boards at present.
Signed-off-by: Simon Glass sjg@chromium.org Improvements to how the payload is built: Signed-off-by: Bin Meng bmeng.cn@gmail.com
Changes in v3:
- Add spaces around EFIARCH=
- Use CONFIG_SYS_MONITOR_LEN as a more accurate value for U-Boot's size
Changes in v2:
- Add -no-red-zone for 64-bit only
- Check the GDT selector's base and limit against the target address
- Drop use of CONFIG_X86_64 since we don't support a 64-bit EFI application yet
- Merge in Bin's implementation of adding a U-Boot payload with objcopy
- Move the 64-bit crt and reloc code into this patch
- Move the 64-bit efi.h additions into this patch
- Rename GDT_4GB to GDT_4KB
Makefile | 2 +- arch/x86/config.mk | 10 ++++++ arch/x86/include/asm/types.h | 5 ++- arch/x86/lib/efi/crt0-efi-x86_64.S | 51 ++++++++++++++++++++++++++ include/efi.h | 7 ++++ lib/efi/efi_stub.c | 74 +++++++++++++++++++++++++++++++++++--- 6 files changed, 143 insertions(+), 6 deletions(-) create mode 100644 arch/x86/lib/efi/crt0-efi-x86_64.S
[snip]
Reviewed-by: Bin Meng bmeng.cn@gmail.com
Tested on QEMU 32-bit and 64-bit Tested-by: Bin Meng bmeng.cn@gmail.com