diff options
-rw-r--r-- | arch/arm/lib/armlinux.c | 2 | ||||
-rw-r--r-- | arch/arm/lib/bootm.c | 19 |
2 files changed, 17 insertions, 4 deletions
diff --git a/arch/arm/lib/armlinux.c b/arch/arm/lib/armlinux.c index d83c6a2e74..bc286200c0 100644 --- a/arch/arm/lib/armlinux.c +++ b/arch/arm/lib/armlinux.c @@ -261,7 +261,7 @@ void start_linux(void *adr, int swap, unsigned long initrd_address, int architecture; if (oftree) { - printf("booting Linux kernel with devicetree\n"); + printf("booting kernel with devicetree\n"); params = oftree; } else { setup_tags(initrd_address, initrd_size, swap); diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c index 599b09af9c..c0e4e15ea6 100644 --- a/arch/arm/lib/bootm.c +++ b/arch/arm/lib/bootm.c @@ -296,15 +296,28 @@ static struct image_handler zimage_handler = { static int do_bootm_barebox(struct image_data *data) { - void (*barebox)(void); + void *barebox; barebox = read_file(data->os_file, NULL); if (!barebox) return -EINVAL; - shutdown_barebox(); + if (IS_ENABLED(CONFIG_OFTREE) && data->of_root_node) { + data->oftree = of_get_fixed_tree(data->of_root_node); + fdt_add_reserve_map(data->oftree); + of_print_cmdline(data->of_root_node); + if (bootm_verbose(data) > 1) + of_print_nodes(data->of_root_node, 0); + } + + if (bootm_verbose(data)) { + printf("\nStarting barebox at 0x%p", barebox); + if (data->oftree) + printf(", oftree at 0x%p", data->oftree); + printf("...\n"); + } - barebox(); + start_linux(barebox, 0, 0, 0, data->oftree); reset_cpu(0); } |