summaryrefslogtreecommitdiffstats
path: root/arch/arm/lib/bootm.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-03-03 14:06:29 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2013-03-06 11:41:29 +0100
commit973e58e3abdc70f3d28c61961a4fc7b0acac0719 (patch)
tree17afc74f845bc0cdf24539a567359b5c4b21c401 /arch/arm/lib/bootm.c
parent6d6edfcf53be19efa040b3a6fcb7583ce1fca573 (diff)
downloadbarebox-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.c11
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)