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 1c1bee6ae..599547d2c 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  |