X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=arch%2Fx86%2Flib%2Fbootm.c;h=83caf6bdbd780113862d8d80374412cc9ff3cef4;hb=de30122bb58fee7b0f94bcfabab595b6ad757336;hp=836803cbea3ca5c252bc57150976c1dac66ea19d;hpb=83088afbba0c142fda5313866abd1e679d0f9e78;p=oweals%2Fu-boot.git diff --git a/arch/x86/lib/bootm.c b/arch/x86/lib/bootm.c index 836803cbea..83caf6bdbd 100644 --- a/arch/x86/lib/bootm.c +++ b/arch/x86/lib/bootm.c @@ -28,16 +28,20 @@ #include #include #include +#include #include #include +#define COMMAND_LINE_OFFSET 0x9000 + /*cmd_boot.c*/ int do_bootm_linux(int flag, int argc, char * const argv[], bootm_headers_t *images) { - void *base_ptr; - ulong os_data, os_len; - image_header_t *hdr; + struct boot_params *base_ptr = NULL; + ulong os_data, os_len; + image_header_t *hdr; + void *load_address; #if defined(CONFIG_FIT) const void *data; @@ -73,13 +77,20 @@ int do_bootm_linux(int flag, int argc, char * const argv[], goto error; } - base_ptr = load_zimage((void *)os_data, os_len, - images->rd_start, images->rd_end - images->rd_start, 0); +#ifdef CONFIG_CMD_ZBOOT + base_ptr = load_zimage((void *)os_data, os_len, &load_address); +#endif if (NULL == base_ptr) { printf("## Kernel loading failed ...\n"); goto error; + } + if (setup_zimage(base_ptr, (char *)base_ptr + COMMAND_LINE_OFFSET, + 0, images->rd_start, + images->rd_end - images->rd_start)) { + printf("## Setting up boot parameters failed ...\n"); + goto error; } #ifdef DEBUG @@ -90,7 +101,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: