]> git.sur5r.net Git - u-boot/commitdiff
arm: fix bootm with device tree
authorStephen Warren <swarren@nvidia.com>
Thu, 19 Apr 2012 11:34:00 +0000 (11:34 +0000)
committerWolfgang Denk <wd@denx.de>
Mon, 23 Apr 2012 20:10:41 +0000 (22:10 +0200)
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>
arch/arm/lib/bootm.c

index 1c1bee6aeb135251eac353783a6fb76196c2961a..cba457fcc9ee1a8b7edd79cc965de16501c65dd6 100644 (file)
@@ -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