|
@@ -237,6 +237,26 @@ static void boot_prep_linux(bootm_headers_t *images)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
|
|
|
|
+static bool boot_nonsec(void)
|
|
|
|
+{
|
|
|
|
+ char *s = getenv("bootm_boot_mode");
|
|
|
|
+#ifdef CONFIG_ARMV7_BOOT_SEC_DEFAULT
|
|
|
|
+ bool nonsec = false;
|
|
|
|
+#else
|
|
|
|
+ bool nonsec = true;
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+ if (s && !strcmp(s, "sec"))
|
|
|
|
+ nonsec = false;
|
|
|
|
+
|
|
|
|
+ if (s && !strcmp(s, "nonsec"))
|
|
|
|
+ nonsec = true;
|
|
|
|
+
|
|
|
|
+ return nonsec;
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
/* Subcommand: GO */
|
|
/* Subcommand: GO */
|
|
static void boot_jump_linux(bootm_headers_t *images, int flag)
|
|
static void boot_jump_linux(bootm_headers_t *images, int flag)
|
|
{
|
|
{
|
|
@@ -285,12 +305,13 @@ static void boot_jump_linux(bootm_headers_t *images, int flag)
|
|
|
|
|
|
if (!fake) {
|
|
if (!fake) {
|
|
#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
|
|
#if defined(CONFIG_ARMV7_NONSEC) || defined(CONFIG_ARMV7_VIRT)
|
|
- armv7_init_nonsec();
|
|
|
|
- secure_ram_addr(_do_nonsec_entry)(kernel_entry,
|
|
|
|
- 0, machid, r2);
|
|
|
|
-#else
|
|
|
|
- kernel_entry(0, machid, r2);
|
|
|
|
|
|
+ if (boot_nonsec()) {
|
|
|
|
+ armv7_init_nonsec();
|
|
|
|
+ secure_ram_addr(_do_nonsec_entry)(kernel_entry,
|
|
|
|
+ 0, machid, r2);
|
|
|
|
+ } else
|
|
#endif
|
|
#endif
|
|
|
|
+ kernel_entry(0, machid, r2);
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|