diff options
author | Simon Glass <sjg@chromium.org> | 2017-01-16 14:04:10 (GMT) |
---|---|---|
committer | Bin Meng <bmeng.cn@gmail.com> | 2017-02-06 03:38:46 (GMT) |
commit | 23b89d4d6ed05be0e7be4b22703dd9ecd66ac7ba (patch) | |
tree | ec53dacbcb06e897c07d1479dfea1990136e22cf | |
parent | 05cbd985c0b9b5319355fcd562f5665d5fcb8652 (diff) | |
download | u-boot-23b89d4d6ed05be0e7be4b22703dd9ecd66ac7ba.tar.xz |
x86: Don't build call64 and setjmp on 64-bit
These are currently not supported. Calling 64-bit code from 64-bit U-Boot is
much simpler, so this code is not needed. setjmp() is not yet implemented for
64-bit.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
-rw-r--r-- | arch/x86/cpu/Makefile | 6 | ||||
-rw-r--r-- | arch/x86/lib/bootm.c | 7 |
2 files changed, 12 insertions, 1 deletions
diff --git a/arch/x86/cpu/Makefile b/arch/x86/cpu/Makefile index 7f89ff0..f0135a7 100644 --- a/arch/x86/cpu/Makefile +++ b/arch/x86/cpu/Makefile @@ -14,7 +14,11 @@ else extra-y = start.o endif extra-$(CONFIG_$(SPL_)X86_16BIT_INIT) += resetvec.o start16.o -obj-y += cpu.o cpu_x86.o call64.o setjmp.o +ifndef CONFIG_$(SPL_)X86_64 +obj-y += call64.o setjmp.o +endif + +obj-y += cpu.o cpu_x86.o AFLAGS_REMOVE_call32.o := -mregparm=3 \ $(if $(CONFIG_EFI_STUB_64BIT),-march=i386 -m32) diff --git a/arch/x86/lib/bootm.c b/arch/x86/lib/bootm.c index e5e63f6..3c3d9e1 100644 --- a/arch/x86/lib/bootm.c +++ b/arch/x86/lib/bootm.c @@ -155,7 +155,14 @@ int boot_linux_kernel(ulong setup_base, ulong load_address, bool image_64bit) puts("Cannot boot 64-bit kernel on 32-bit machine\n"); return -EFAULT; } + /* At present 64-bit U-Boot does not support booting a + * kernel. + * TODO(sjg@chromium.org): Support booting both 32-bit and + * 64-bit kernels from 64-bit U-Boot. + */ +#if !CONFIG_IS_ENABLED(X86_64) return cpu_jump_to_64bit(setup_base, load_address); +#endif } else { /* * Set %ebx, %ebp, and %edi to 0, %esi to point to the |