diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2013-03-03 14:06:29 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-03-06 11:41:29 +0100 |
commit | 973e58e3abdc70f3d28c61961a4fc7b0acac0719 (patch) | |
tree | 17afc74f845bc0cdf24539a567359b5c4b21c401 /arch/arm/lib/bootm.c | |
parent | 6d6edfcf53be19efa040b3a6fcb7583ce1fca573 (diff) | |
download | barebox-973e58e3abdc70f3d28c61961a4fc7b0acac0719.tar.gz barebox-973e58e3abdc70f3d28c61961a4fc7b0acac0719.tar.xz |
ARM bootm: Switch initrd support to unflattened tree
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/lib/bootm.c')
-rw-r--r-- | arch/arm/lib/bootm.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c index 00c49086c6..4decee4b0c 100644 --- a/arch/arm/lib/bootm.c +++ b/arch/arm/lib/bootm.c @@ -26,7 +26,7 @@ static int __do_bootm_linux(struct image_data *data, int swap) { unsigned long kernel; - unsigned long initrd_start = 0, initrd_size = 0; + unsigned long initrd_start = 0, initrd_size = 0, initrd_end = 0; struct memory_bank *bank; unsigned long load_address; @@ -82,9 +82,18 @@ static int __do_bootm_linux(struct image_data *data, int swap) if (data->initrd_res) { initrd_start = data->initrd_res->start; + initrd_end = data->initrd_res->end; initrd_size = resource_size(data->initrd_res); } + if (IS_ENABLED(CONFIG_OFTREE) && data->of_root_node) { + of_add_initrd(data->of_root_node, initrd_start, initrd_end); + if (initrd_end) + of_add_reserve_entry(initrd_start, initrd_end); + data->oftree = of_get_fixed_tree(data->of_root_node); + fdt_add_reserve_map(data->oftree); + } + if (bootm_verbose(data)) { printf("\nStarting kernel at 0x%08lx", kernel); if (initrd_size) |