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> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com>master
parent
6f92ed8f1a
commit
96a8d409a7
@ -0,0 +1,51 @@ |
||||
/* |
||||
* crt0-efi-x86_64.S - x86_64 EFI startup code. |
||||
* Copyright (C) 1999 Hewlett-Packard Co. |
||||
* Contributed by David Mosberger <davidm@hpl.hp.com>.
|
||||
* Copyright (C) 2005 Intel Co. |
||||
* Contributed by Fenghua Yu <fenghua.yu@intel.com>.
|
||||
* |
||||
* All rights reserved. |
||||
* SPDX-License-Identifier: BSD-3-Clause |
||||
*/ |
||||
.text |
||||
.align 4
|
||||
|
||||
.globl _start
|
||||
_start: |
||||
subq $8, %rsp |
||||
pushq %rcx |
||||
pushq %rdx |
||||
|
||||
0: |
||||
lea image_base(%rip), %rdi |
||||
lea _DYNAMIC(%rip), %rsi |
||||
|
||||
popq %rcx |
||||
popq %rdx |
||||
pushq %rcx |
||||
pushq %rdx |
||||
call _relocate |
||||
|
||||
popq %rdi |
||||
popq %rsi |
||||
|
||||
call efi_main |
||||
addq $8, %rsp |
||||
|
||||
.exit: |
||||
ret |
||||
|
||||
/* |
||||
* hand-craft a dummy .reloc section so EFI knows it's a relocatable |
||||
* executable: |
||||
*/ |
||||
.data |
||||
dummy: .long 0 |
||||
|
||||
#define IMAGE_REL_ABSOLUTE 0 |
||||
.section .reloc, "a" |
||||
label1: |
||||
.long dummy-label1 /* Page RVA */ |
||||
.long 10 /* Block Size (2*4+2) */ |
||||
.word (IMAGE_REL_ABSOLUTE << 12) + 0 /* reloc for dummy */ |
Loading…
Reference in new issue