|
@@ -70,6 +70,7 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
|
char *s;
|
|
char *s;
|
|
int machid = bd->bi_arch_number;
|
|
int machid = bd->bi_arch_number;
|
|
void (*theKernel)(int zero, int arch, uint params);
|
|
void (*theKernel)(int zero, int arch, uint params);
|
|
|
|
+ int ret;
|
|
|
|
|
|
#ifdef CONFIG_CMDLINE_TAG
|
|
#ifdef CONFIG_CMDLINE_TAG
|
|
char *commandline = getenv ("bootargs");
|
|
char *commandline = getenv ("bootargs");
|
|
@@ -80,12 +81,16 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
|
ep = image_get_ep (images->legacy_hdr_os);
|
|
ep = image_get_ep (images->legacy_hdr_os);
|
|
#if defined(CONFIG_FIT)
|
|
#if defined(CONFIG_FIT)
|
|
} else if (images->fit_uname_os) {
|
|
} else if (images->fit_uname_os) {
|
|
- fit_unsupported_reset ("ARM linux bootm");
|
|
|
|
- do_reset (cmdtp, flag, argc, argv);
|
|
|
|
|
|
+ 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
|
|
#endif
|
|
} else {
|
|
} else {
|
|
puts ("Could not find kernel entry point!\n");
|
|
puts ("Could not find kernel entry point!\n");
|
|
- do_reset (cmdtp, flag, argc, argv);
|
|
|
|
|
|
+ goto error;
|
|
}
|
|
}
|
|
theKernel = (void (*)(int, int, uint))ep;
|
|
theKernel = (void (*)(int, int, uint))ep;
|
|
|
|
|
|
@@ -98,7 +103,7 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
|
ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_ARM,
|
|
ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_ARM,
|
|
&initrd_start, &initrd_end);
|
|
&initrd_start, &initrd_end);
|
|
if (ret)
|
|
if (ret)
|
|
- do_reset (cmdtp, flag, argc, argv);
|
|
|
|
|
|
+ goto error;
|
|
|
|
|
|
show_boot_progress (15);
|
|
show_boot_progress (15);
|
|
|
|
|
|
@@ -151,6 +156,13 @@ void do_bootm_linux (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
|
cleanup_before_linux ();
|
|
cleanup_before_linux ();
|
|
|
|
|
|
theKernel (0, machid, bd->bi_boot_params);
|
|
theKernel (0, machid, bd->bi_boot_params);
|
|
|
|
+ /* does not return */
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+error:
|
|
|
|
+ if (images->autostart)
|
|
|
|
+ do_reset (cmdtp, flag, argc, argv);
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|