X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-uboot.git;a=blobdiff_plain;f=arch%2Fx86%2Flib%2Fbootm.c;h=2520228b4caee000f580e461dcb9294d375b7cac;hp=bac7b4f0cfb8a3b629e11010073509a2b463191b;hb=69f14dc2fd64307f012381dd333a06001dec75dc;hpb=d51e6d6de2b7dcba43fadcae2c89f7346d8bc301 diff --git a/arch/x86/lib/bootm.c b/arch/x86/lib/bootm.c index bac7b4f0cf..2520228b4c 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 = NULL; - 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; @@ -74,25 +78,22 @@ 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); + base_ptr = load_zimage((void *)os_data, os_len, &load_address); #endif if (NULL == base_ptr) { printf("## Kernel loading failed ...\n"); goto error; - } -#ifdef DEBUG - printf("## Transferring control to Linux (at address %08x) ...\n", - (u32)base_ptr); -#endif - - /* we assume that the kernel is in place */ - printf("\nStarting kernel ...\n\n"); + 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; + } - boot_zimage(base_ptr); + boot_zimage(base_ptr, load_address); /* does not return */ error: