浏览代码

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>
Stephen Warren 13 年之前
父节点
当前提交
1723997610
共有 1 个文件被更改,包括 10 次插入1 次删除
  1. 10 1
      arch/arm/lib/bootm.c

+ 10 - 1
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;
 	unsigned long machid = gd->bd->bi_arch_number;
 	char *s;
 	char *s;
 	void (*kernel_entry)(int zero, int arch, uint params);
 	void (*kernel_entry)(int zero, int arch, uint params);
+	unsigned long r2;
 
 
 	kernel_entry = (void (*)(int, int, uint))images->ep;
 	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);
 		"...\n", (ulong) kernel_entry);
 	bootstage_mark(BOOTSTAGE_ID_RUN_OS);
 	bootstage_mark(BOOTSTAGE_ID_RUN_OS);
 	announce_and_cleanup();
 	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
 /* Main Entry point for arm bootm implementation