X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=lib_mips%2Fbootm.c;h=54af24cba3f7cd8af0ed843e72a2399ae07e0ce2;hb=386118a896554b13f14ad0f82356276988f7de82;hp=8fe3782b758318cfee5c2408dfab5c6e2e55f96d;hpb=859f24350e6e4313626f85161dd03f025a4dac59;p=u-boot diff --git a/lib_mips/bootm.c b/lib_mips/bootm.c index 8fe3782b75..54af24cba3 100644 --- a/lib_mips/bootm.c +++ b/lib_mips/bootm.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include @@ -43,41 +43,18 @@ static int linux_env_idx; static void linux_params_init (ulong start, char * commandline); static void linux_env_set (char * env_name, char * env_val); -extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); - -void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[], - bootm_headers_t *images) +int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images) { - ulong initrd_start, initrd_end; - ulong ep = 0; void (*theKernel) (int, char **, char **, int *); char *commandline = getenv ("bootargs"); char env_buf[12]; - int ret; - const char *cp; + char *cp; - /* find kernel entry point */ - if (images->legacy_hdr_valid) { - ep = image_get_ep (&images->legacy_hdr_os_copy); -#if defined(CONFIG_FIT) - } else if (images->fit_uname_os) { - ret = fit_image_get_entry (images->fit_hdr_os, - images->fit_noffset_os, &ep); - if (ret) { - puts ("Can't get entry point property!\n"); - goto error; - } -#endif - } else { - puts ("Could not find kernel entry point!\n"); - goto error; - } - theKernel = (void (*)(int, char **, char **, int *))ep; + if ((flag != 0) && (flag != BOOTM_STATE_OS_GO)) + return 1; - ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_MIPS, - &initrd_start, &initrd_end); - if (ret) - goto error; + /* find kernel entry point */ + theKernel = (void (*)(int, char **, char **, int *))images->ep; show_boot_progress (15); @@ -89,23 +66,19 @@ void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[], linux_params_init (UNCACHED_SDRAM (gd->bd->bi_boot_params), commandline); #ifdef CONFIG_MEMSIZE_IN_BYTES - sprintf (env_buf, "%lu", gd->ram_size); -#ifdef DEBUG - printf ("## Giving linux memsize in bytes, %lu\n", gd->ram_size); -#endif + sprintf (env_buf, "%lu", (ulong)gd->ram_size); + debug ("## Giving linux memsize in bytes, %lu\n", (ulong)gd->ram_size); #else - sprintf (env_buf, "%lu", gd->ram_size >> 20); -#ifdef DEBUG - printf ("## Giving linux memsize in MB, %lu\n", gd->ram_size >> 20); -#endif + sprintf (env_buf, "%lu", (ulong)(gd->ram_size >> 20)); + debug ("## Giving linux memsize in MB, %lu\n", (ulong)(gd->ram_size >> 20)); #endif /* CONFIG_MEMSIZE_IN_BYTES */ linux_env_set ("memsize", env_buf); - sprintf (env_buf, "0x%08X", (uint) UNCACHED_SDRAM (initrd_start)); + sprintf (env_buf, "0x%08X", (uint) UNCACHED_SDRAM (images->rd_start)); linux_env_set ("initrd_start", env_buf); - sprintf (env_buf, "0x%X", (uint) (initrd_end - initrd_start)); + sprintf (env_buf, "0x%X", (uint) (images->rd_end - images->rd_start)); linux_env_set ("initrd_size", env_buf); sprintf (env_buf, "0x%08X", (uint) (gd->bd->bi_flashstart)); @@ -124,20 +97,12 @@ void do_bootm_linux (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[], linux_env_set("eth1addr", cp); } - if (!images->autostart) - return ; - /* we assume that the kernel is in place */ printf ("\nStarting kernel ...\n\n"); theKernel (linux_argc, linux_argv, linux_env, 0); /* does not return */ - return; - -error: - if (images->autostart) - do_reset (cmdtp, flag, argc, argv); - return; + return 1; } static void linux_params_init (ulong start, char *line)