X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=lib_avr32%2Fbootm.c;h=6a3172a9a0c11efda750ebe77d91ba03a1b61dd0;hb=0a87dd90a75d034301496285026fbd8106c7c6d5;hp=a934cae9d98e84820bbe04ea5269bf1853a4bbbe;hpb=5ad03eb3854c162684222a718b44c0716ea0db03;p=u-boot diff --git a/lib_avr32/bootm.c b/lib_avr32/bootm.c index a934cae9d9..6a3172a9a0 100644 --- a/lib_avr32/bootm.c +++ b/lib_avr32/bootm.c @@ -22,9 +22,9 @@ #include #include #include -#include +#include #include -#include +#include #include #include #include @@ -171,29 +171,26 @@ static void setup_end_tag(struct tag *params) params->hdr.size = 0; } -void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], - image_header_t *hdr, int verify) +int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images) { - ulong initrd_start, initrd_end; + void (*theKernel)(int magic, void *tagtable); + struct tag *params, *params_start; + char *commandline = getenv("bootargs"); - void (*theKernel)(int magic, void *tagtable); - struct tag *params, *params_start; - char *commandline = getenv("bootargs"); + if ((flag != 0) && (flag != BOOTM_STATE_OS_GO)) + return 1; - theKernel = (void *)image_get_ep (hdr); - - get_ramdisk (cmdtp, flag, argc, argv, hdr, verify, - IH_ARCH_AVR32, &initrd_start, &initrd_end); + theKernel = (void *)images->ep; show_boot_progress (15); params = params_start = (struct tag *)gd->bd->bi_boot_params; params = setup_start_tag(params); params = setup_memory_tags(params); - if (initrd_start) { + if (images->rd_start) { params = setup_ramdisk_tag(params, - PHYSADDR(initrd_start), - PHYSADDR(initrd_end)); + PHYSADDR(images->rd_start), + PHYSADDR(images->rd_end)); } params = setup_commandline_tag(params, commandline); params = setup_clock_tags(params); @@ -206,4 +203,7 @@ void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], prepare_to_boot(); theKernel(ATAG_MAGIC, params_start); + /* does not return */ + + return 1; }