diff options
Diffstat (limited to 'arch/arm/lib/bootm.c')
-rw-r--r-- | arch/arm/lib/bootm.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c index 1c1bee6..599547d 100644 --- a/arch/arm/lib/bootm.c +++ b/arch/arm/lib/bootm.c @@ -256,6 +256,7 @@ static int create_fdt(bootm_headers_t *images) fdt_chosen(*of_flat_tree, 1); fixup_memory_node(*of_flat_tree); + fdt_fixup_ethernet(*of_flat_tree); fdt_initrd(*of_flat_tree, *initrd_start, *initrd_end, 1); return 0; @@ -317,6 +318,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 +332,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 |