|
@@ -92,8 +92,7 @@ extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
|
|
|
* - loaded (first part of) image to header load address,
|
|
|
* - disabled interrupts.
|
|
|
*/
|
|
|
-typedef void boot_os_fn (cmd_tbl_t *cmdtp, int flag,
|
|
|
- int argc, char *argv[],
|
|
|
+typedef int boot_os_fn (int flag, int argc, char *argv[],
|
|
|
bootm_headers_t *images); /* pointers to os/initrd/fdt */
|
|
|
|
|
|
extern boot_os_fn do_bootm_linux;
|
|
@@ -428,36 +427,36 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|
|
#ifdef CONFIG_SILENT_CONSOLE
|
|
|
fixup_silent_linux();
|
|
|
#endif
|
|
|
- do_bootm_linux (cmdtp, flag, argc, argv, &images);
|
|
|
+ do_bootm_linux (0, argc, argv, &images);
|
|
|
break;
|
|
|
|
|
|
case IH_OS_NETBSD:
|
|
|
- do_bootm_netbsd (cmdtp, flag, argc, argv, &images);
|
|
|
+ do_bootm_netbsd (0, argc, argv, &images);
|
|
|
break;
|
|
|
|
|
|
#ifdef CONFIG_LYNXKDI
|
|
|
case IH_OS_LYNXOS:
|
|
|
- do_bootm_lynxkdi (cmdtp, flag, argc, argv, &images);
|
|
|
+ do_bootm_lynxkdi (0, argc, argv, &images);
|
|
|
break;
|
|
|
#endif
|
|
|
|
|
|
case IH_OS_RTEMS:
|
|
|
- do_bootm_rtems (cmdtp, flag, argc, argv, &images);
|
|
|
+ do_bootm_rtems (0, argc, argv, &images);
|
|
|
break;
|
|
|
|
|
|
#if defined(CONFIG_CMD_ELF)
|
|
|
case IH_OS_VXWORKS:
|
|
|
- do_bootm_vxworks (cmdtp, flag, argc, argv, &images);
|
|
|
+ do_bootm_vxworks (0, argc, argv, &images);
|
|
|
break;
|
|
|
|
|
|
case IH_OS_QNX:
|
|
|
- do_bootm_qnxelf (cmdtp, flag, argc, argv, &images);
|
|
|
+ do_bootm_qnxelf (0, argc, argv, &images);
|
|
|
break;
|
|
|
#endif
|
|
|
|
|
|
#ifdef CONFIG_ARTOS
|
|
|
case IH_OS_ARTOS:
|
|
|
- do_bootm_artos (cmdtp, flag, argc, argv, &images);
|
|
|
+ do_bootm_artos (0, argc, argv, &images);
|
|
|
break;
|
|
|
#endif
|
|
|
}
|
|
@@ -465,10 +464,8 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|
|
show_boot_progress (-9);
|
|
|
#ifdef DEBUG
|
|
|
puts ("\n## Control returned to monitor - resetting...\n");
|
|
|
- do_reset (cmdtp, flag, argc, argv);
|
|
|
#endif
|
|
|
- if (iflag)
|
|
|
- enable_interrupts();
|
|
|
+ do_reset (cmdtp, flag, argc, argv);
|
|
|
|
|
|
return 1;
|
|
|
}
|
|
@@ -983,8 +980,7 @@ static void fixup_silent_linux ()
|
|
|
/* OS booting routines */
|
|
|
/*******************************************************************/
|
|
|
|
|
|
-static void do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag,
|
|
|
- int argc, char *argv[],
|
|
|
+static int do_bootm_netbsd (int flag, int argc, char *argv[],
|
|
|
bootm_headers_t *images)
|
|
|
{
|
|
|
void (*loader)(bd_t *, image_header_t *, char *, char *);
|
|
@@ -996,7 +992,7 @@ static void do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag,
|
|
|
#if defined(CONFIG_FIT)
|
|
|
if (!images->legacy_hdr_valid) {
|
|
|
fit_unsupported_reset ("NetBSD");
|
|
|
- do_reset (cmdtp, flag, argc, argv);
|
|
|
+ return 1;
|
|
|
}
|
|
|
#endif
|
|
|
hdr = images->legacy_hdr_os;
|
|
@@ -1063,11 +1059,12 @@ static void do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag,
|
|
|
* r6: boot args string
|
|
|
*/
|
|
|
(*loader) (gd->bd, os_hdr, consdev, cmdline);
|
|
|
+
|
|
|
+ return 1;
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_LYNXKDI
|
|
|
-static void do_bootm_lynxkdi (cmd_tbl_t *cmdtp, int flag,
|
|
|
- int argc, char *argv[],
|
|
|
+static int do_bootm_lynxkdi (int flag, int argc, char *argv[],
|
|
|
bootm_headers_t *images)
|
|
|
{
|
|
|
image_header_t *hdr = &images->legacy_hdr_os_copy;
|
|
@@ -1075,16 +1072,17 @@ static void do_bootm_lynxkdi (cmd_tbl_t *cmdtp, int flag,
|
|
|
#if defined(CONFIG_FIT)
|
|
|
if (!images->legacy_hdr_valid) {
|
|
|
fit_unsupported_reset ("Lynx");
|
|
|
- do_reset (cmdtp, flag, argc, argv);
|
|
|
+ return 1;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
lynxkdi_boot ((image_header_t *)hdr);
|
|
|
+
|
|
|
+ return 1;
|
|
|
}
|
|
|
#endif /* CONFIG_LYNXKDI */
|
|
|
|
|
|
-static void do_bootm_rtems (cmd_tbl_t *cmdtp, int flag,
|
|
|
- int argc, char *argv[],
|
|
|
+static int do_bootm_rtems (int flag, int argc, char *argv[],
|
|
|
bootm_headers_t *images)
|
|
|
{
|
|
|
void (*entry_point)(bd_t *);
|
|
@@ -1092,7 +1090,7 @@ static void do_bootm_rtems (cmd_tbl_t *cmdtp, int flag,
|
|
|
#if defined(CONFIG_FIT)
|
|
|
if (!images->legacy_hdr_valid) {
|
|
|
fit_unsupported_reset ("RTEMS");
|
|
|
- do_reset (cmdtp, flag, argc, argv);
|
|
|
+ return 1;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -1108,11 +1106,12 @@ static void do_bootm_rtems (cmd_tbl_t *cmdtp, int flag,
|
|
|
* r3: ptr to board info data
|
|
|
*/
|
|
|
(*entry_point)(gd->bd);
|
|
|
+
|
|
|
+ return 1;
|
|
|
}
|
|
|
|
|
|
#if defined(CONFIG_CMD_ELF)
|
|
|
-static void do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag,
|
|
|
- int argc, char *argv[],
|
|
|
+static int do_bootm_vxworks (int flag, int argc, char *argv[],
|
|
|
bootm_headers_t *images)
|
|
|
{
|
|
|
char str[80];
|
|
@@ -1120,17 +1119,18 @@ static void do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag,
|
|
|
#if defined(CONFIG_FIT)
|
|
|
if (!images->legacy_hdr_valid) {
|
|
|
fit_unsupported_reset ("VxWorks");
|
|
|
- do_reset (cmdtp, flag, argc, argv);
|
|
|
+ return 1;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
sprintf(str, "%lx", images->ep); /* write entry-point into string */
|
|
|
setenv("loadaddr", str);
|
|
|
- do_bootvx(cmdtp, 0, 0, NULL);
|
|
|
+ do_bootvx(NULL, 0, 0, NULL);
|
|
|
+
|
|
|
+ return 1;
|
|
|
}
|
|
|
|
|
|
-static void do_bootm_qnxelf(cmd_tbl_t *cmdtp, int flag,
|
|
|
- int argc, char *argv[],
|
|
|
+static int do_bootm_qnxelf(int flag, int argc, char *argv[],
|
|
|
bootm_headers_t *images)
|
|
|
{
|
|
|
char *local_args[2];
|
|
@@ -1139,20 +1139,21 @@ static void do_bootm_qnxelf(cmd_tbl_t *cmdtp, int flag,
|
|
|
#if defined(CONFIG_FIT)
|
|
|
if (!images->legacy_hdr_valid) {
|
|
|
fit_unsupported_reset ("QNX");
|
|
|
- do_reset (cmdtp, flag, argc, argv);
|
|
|
+ return 1;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
sprintf(str, "%lx", images->ep); /* write entry-point into string */
|
|
|
local_args[0] = argv[0];
|
|
|
local_args[1] = str; /* and provide it via the arguments */
|
|
|
- do_bootelf(cmdtp, 0, 2, local_args);
|
|
|
+ do_bootelf(NULL, 0, 2, local_args);
|
|
|
+
|
|
|
+ return 1;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
#if defined(CONFIG_ARTOS) && defined(CONFIG_PPC)
|
|
|
-static void do_bootm_artos (cmd_tbl_t *cmdtp, int flag,
|
|
|
- int argc, char *argv[],
|
|
|
+static int do_bootm_artos (int flag, int argc, char *argv[],
|
|
|
bootm_headers_t *images)
|
|
|
{
|
|
|
ulong top;
|
|
@@ -1165,7 +1166,7 @@ static void do_bootm_artos (cmd_tbl_t *cmdtp, int flag,
|
|
|
#if defined(CONFIG_FIT)
|
|
|
if (!images->legacy_hdr_valid) {
|
|
|
fit_unsupported_reset ("ARTOS");
|
|
|
- do_reset (cmdtp, flag, argc, argv);
|
|
|
+ return 1;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
@@ -1237,5 +1238,7 @@ static void do_bootm_artos (cmd_tbl_t *cmdtp, int flag,
|
|
|
|
|
|
entry = (void (*)(bd_t *, char *, char **, ulong))images->ep;
|
|
|
(*entry) (kbd, cmdline, fwenv, top);
|
|
|
+
|
|
|
+ return 1;
|
|
|
}
|
|
|
#endif
|