aboutsummaryrefslogtreecommitdiff
path: root/arch/x86/lib/bootm.c
diff options
context:
space:
mode:
authorGabe Black <gabeblack@chromium.org>2011-12-05 12:09:24 +0000
committerGraeme Russ <graeme.russ@gmail.com>2011-12-19 13:26:16 +1100
commit233dbc119438ad17bb0bc7104ba7972415c4f7e7 (patch)
tree03022351620c0713a9d869c2e2e78e6b3175090e /arch/x86/lib/bootm.c
parentd3a2bc3fd148232461c2435330261aeaabf87830 (diff)
x86: Add support for booting Linux using the 32 bit boot protocol
This change conditionally modifies the zboot command so that it can use the 32 bit boot protocol. This is necessary because the 16 bit realmode entry point assumes that it can call BIOS services which neither coreboot nor u-boot provide. Signed-off-by: Gabe Black <gabeblack@chromium.org>
Diffstat (limited to 'arch/x86/lib/bootm.c')
-rw-r--r--arch/x86/lib/bootm.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/lib/bootm.c b/arch/x86/lib/bootm.c
index bac7b4f0c..ba3875b1b 100644
--- a/arch/x86/lib/bootm.c
+++ b/arch/x86/lib/bootm.c
@@ -38,6 +38,7 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
void *base_ptr = NULL;
ulong os_data, os_len;
image_header_t *hdr;
+ void *load_address;
#if defined(CONFIG_FIT)
const void *data;
@@ -75,7 +76,8 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
#ifdef CONFIG_CMD_ZBOOT
base_ptr = load_zimage((void *)os_data, os_len,
- images->rd_start, images->rd_end - images->rd_start, 0);
+ images->rd_start, images->rd_end - images->rd_start,
+ 0, &load_address);
#endif
if (NULL == base_ptr) {
@@ -92,7 +94,7 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
/* we assume that the kernel is in place */
printf("\nStarting kernel ...\n\n");
- boot_zimage(base_ptr);
+ boot_zimage(base_ptr, load_address);
/* does not return */
error: