mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-18 06:58:54 +00:00
x86: bootm: Support booting a 64-bit raw kernel
Detect an x86_64 kernel and boot it in 64-bit mode. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
5bda35cffa
commit
61643ae61a
1 changed files with 8 additions and 2 deletions
|
@ -15,6 +15,7 @@
|
|||
#include <image.h>
|
||||
#include <u-boot/zlib.h>
|
||||
#include <asm/bootparam.h>
|
||||
#include <asm/cpu.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/zimage.h>
|
||||
#ifdef CONFIG_SYS_COREBOOT
|
||||
|
@ -148,7 +149,11 @@ int boot_linux_kernel(ulong setup_base, ulong load_address, bool image_64bit)
|
|||
timestamp_add_now(TS_U_BOOT_START_KERNEL);
|
||||
#endif
|
||||
if (image_64bit) {
|
||||
/* TODO(boot 64-bit kernel) */
|
||||
if (!cpu_has_64bit()) {
|
||||
puts("Cannot boot 64-bit kernel on 32-bit machine\n");
|
||||
return -EFAULT;
|
||||
}
|
||||
return cpu_jump_to_64bit(setup_base, load_address);
|
||||
} else {
|
||||
/*
|
||||
* Set %ebx, %ebp, and %edi to 0, %esi to point to the
|
||||
|
@ -178,7 +183,8 @@ static int boot_jump_linux(bootm_headers_t *images)
|
|||
debug("## Transferring control to Linux (at address %08lx, kernel %08lx) ...\n",
|
||||
images->ep, images->os.load);
|
||||
|
||||
return boot_linux_kernel(images->ep, images->os.load, false);
|
||||
return boot_linux_kernel(images->ep, images->os.load,
|
||||
images->os.arch == IH_ARCH_X86_64);
|
||||
}
|
||||
|
||||
int do_bootm_linux(int flag, int argc, char * const argv[],
|
||||
|
|
Loading…
Add table
Reference in a new issue