aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2012-04-19 11:34:00 +0000
committerWolfgang Denk <wd@denx.de>2012-04-23 22:10:41 +0200
commit1723997610ace497252d6f9a44ec76c06951ae43 (patch)
treea13bd05421aae18d0a43b04d27dc24c9d6607787
parent030fca5228a2a1e946ac13ff8fae9ccb8c516d7b (diff)
arm: fix bootm with device tree
Commit 0a672d4 "arm: Add Prep subcommand support to bootm" re-organized do_bootm_linux() for ARM. During the re-organization, the code to pass the device tree to the kernel was removed. Add it back. This restores the ability to boot a kernel using device tree. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Tom Rini <trini@ti.com> Acked-by: Allen Martin <amartin@nvidia.com> Tested-by: Allen Martin <amartin@nvidia.com>
-rw-r--r--arch/arm/lib/bootm.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
index 1c1bee6ae..cba457fcc 100644
--- a/arch/arm/lib/bootm.c
+++ b/arch/arm/lib/bootm.c
@@ -317,6 +317,7 @@ static void boot_jump_linux(bootm_headers_t *images)
unsigned long machid = gd->bd->bi_arch_number;
char *s;
void (*kernel_entry)(int zero, int arch, uint params);
+ unsigned long r2;
kernel_entry = (void (*)(int, int, uint))images->ep;
@@ -330,7 +331,15 @@ static void boot_jump_linux(bootm_headers_t *images)
"...\n", (ulong) kernel_entry);
bootstage_mark(BOOTSTAGE_ID_RUN_OS);
announce_and_cleanup();
- kernel_entry(0, machid, gd->bd->bi_boot_params);
+
+#ifdef CONFIG_OF_LIBFDT
+ if (images->ft_len)
+ r2 = (unsigned long)images->ft_addr;
+ else
+#endif
+ r2 = gd->bd->bi_boot_params;
+
+ kernel_entry(0, machid, r2);
}
/* Main Entry point for arm bootm implementation