diff options
author | Kumar Gala <galak@kernel.crashing.org> | 2008-08-15 08:24:42 -0500 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-08-26 23:43:36 +0200 |
commit | 3082d2348c8e13342f5fdd10e9b3f7408062dbf9 (patch) | |
tree | a856dae8fd63dd52dd0270c6ad65d4b72882afc0 /lib_ppc/bootm.c | |
parent | 396f635b8ff3ccbc38d75d5eda98444c6466810a (diff) |
fdt: refactor fdt resize code
Move the fdt resizing code out of ppc specific boot code and into
common fdt support code.
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'lib_ppc/bootm.c')
-rw-r--r-- | lib_ppc/bootm.c | 32 |
1 files changed, 4 insertions, 28 deletions
diff --git a/lib_ppc/bootm.c b/lib_ppc/bootm.c index b86169a93b..300e00a2da 100644 --- a/lib_ppc/bootm.c +++ b/lib_ppc/bootm.c @@ -162,38 +162,14 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[], /* Fixup the fdt memreserve now that we know how big it is */ if (of_flat_tree) { - int j; - uint64_t addr, size; - int total = fdt_num_mem_rsv(of_flat_tree); - uint actualsize; - - for (j = 0; j < total; j++) { - fdt_get_mem_rsv(of_flat_tree, j, &addr, &size); - if (addr == (uint64_t)(u32)of_flat_tree) { - fdt_del_mem_rsv(of_flat_tree, j); - break; - } - } - /* Delete the old LMB reservation */ lmb_free(lmb, (phys_addr_t)(u32)of_flat_tree, (phys_size_t)fdt_totalsize(of_flat_tree)); - /* Calculate the actual size of the fdt */ - actualsize = fdt_off_dt_strings(of_flat_tree) + - fdt_size_dt_strings(of_flat_tree); - - /* Make it so the fdt ends on a page boundary */ - actualsize = ALIGN(actualsize, 0x1000); - actualsize = actualsize - ((uint)of_flat_tree & 0xfff); - - /* Change the fdt header to reflect the correct size */ - fdt_set_totalsize(of_flat_tree, actualsize); - of_size = actualsize; - - /* Add the new reservation */ - ret = fdt_add_mem_rsv(of_flat_tree, (uint)of_flat_tree, - of_size); + ret = fdt_resize(of_flat_tree); + if (ret < 0) + goto error; + of_size = ret; /* Create a new LMB reservation */ lmb_reserve(lmb, (ulong)of_flat_tree, of_size); |