|
@@ -119,6 +119,9 @@ extern void lynxkdi_boot (image_header_t *);
|
|
|
#ifdef CONFIG_BOOTM_RTEMS
|
|
|
static boot_os_fn do_bootm_rtems;
|
|
|
#endif
|
|
|
+#if defined(CONFIG_BOOTM_OSE)
|
|
|
+static boot_os_fn do_bootm_ose;
|
|
|
+#endif
|
|
|
#if defined(CONFIG_CMD_ELF)
|
|
|
static boot_os_fn do_bootm_vxworks;
|
|
|
static boot_os_fn do_bootm_qnxelf;
|
|
@@ -142,6 +145,9 @@ static boot_os_fn *boot_os[] = {
|
|
|
#ifdef CONFIG_BOOTM_RTEMS
|
|
|
[IH_OS_RTEMS] = do_bootm_rtems,
|
|
|
#endif
|
|
|
+#if defined(CONFIG_BOOTM_OSE)
|
|
|
+ [IH_OS_OSE] = do_bootm_ose,
|
|
|
+#endif
|
|
|
#if defined(CONFIG_CMD_ELF)
|
|
|
[IH_OS_VXWORKS] = do_bootm_vxworks,
|
|
|
[IH_OS_QNX] = do_bootm_qnxelf,
|
|
@@ -1383,6 +1389,39 @@ static int do_bootm_rtems (int flag, int argc, char * const argv[],
|
|
|
}
|
|
|
#endif /* CONFIG_BOOTM_RTEMS */
|
|
|
|
|
|
+#if defined(CONFIG_BOOTM_OSE)
|
|
|
+static int do_bootm_ose (int flag, int argc, char * const argv[],
|
|
|
+ bootm_headers_t *images)
|
|
|
+{
|
|
|
+ void (*entry_point)(void);
|
|
|
+
|
|
|
+ if ((flag != 0) && (flag != BOOTM_STATE_OS_GO))
|
|
|
+ return 1;
|
|
|
+
|
|
|
+#if defined(CONFIG_FIT)
|
|
|
+ if (!images->legacy_hdr_valid) {
|
|
|
+ fit_unsupported_reset ("OSE");
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+#endif
|
|
|
+
|
|
|
+ entry_point = (void (*)(void))images->ep;
|
|
|
+
|
|
|
+ printf ("## Transferring control to OSE (at address %08lx) ...\n",
|
|
|
+ (ulong)entry_point);
|
|
|
+
|
|
|
+ show_boot_progress (15);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * OSE Parameters:
|
|
|
+ * None
|
|
|
+ */
|
|
|
+ (*entry_point)();
|
|
|
+
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+#endif /* CONFIG_BOOTM_OSE */
|
|
|
+
|
|
|
#if defined(CONFIG_CMD_ELF)
|
|
|
static int do_bootm_vxworks (int flag, int argc, char * const argv[],
|
|
|
bootm_headers_t *images)
|