summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/lib/armlinux.c2
-rw-r--r--arch/arm/lib/bootm.c19
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);
}