
If we are bootin OF style than we can skip setting up some things that are used for the old boot method.
Signed-off-by: Kumar Gala galak@kernel.crashing.org ---
patch against u-boot-testing new-image branch
lib_ppc/bootm.c | 25 ++++++++++++++++++++----- 1 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/lib_ppc/bootm.c b/lib_ppc/bootm.c index 1f1be69..5158ccc 100644 --- a/lib_ppc/bootm.c +++ b/lib_ppc/bootm.c @@ -71,8 +71,21 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, bd_t *kbd; void (*kernel)(bd_t *, ulong, ulong, ulong, ulong);
+ int has_of = 0; + #if defined(CONFIG_OF_LIBFDT) char *of_flat_tree; + + /* determine if we are booting w/of */ + if (argc > 3) + has_of = 1; + if (image_check_type (hdr, IH_TYPE_MULTI)) { + ulong fdt_data, fdt_len; + image_multi_getimg (hdr, 2, &fdt_data, &fdt_len); + + if (fdt_len) + has_of = 1; + } #endif
/* @@ -90,12 +103,14 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, alloc_current = sp_limit = get_boot_sp_limit(sp); debug ("=> set upper limit to 0x%08lx\n", sp_limit);
- /* allocate space and init command line */ - alloc_current = get_boot_cmdline (alloc_current, &cmd_start, &cmd_end); + if (!has_of) { + /* allocate space and init command line */ + alloc_current = get_boot_cmdline (alloc_current, &cmd_start, &cmd_end);
- /* allocate space for kernel copy of board info */ - alloc_current = get_boot_kbd (alloc_current, &kbd); - set_clocks_in_mhz(kbd); + /* allocate space for kernel copy of board info */ + alloc_current = get_boot_kbd (alloc_current, &kbd); + set_clocks_in_mhz(kbd); + }
/* find kernel */ kernel = (void (*)(bd_t *, ulong, ulong, ulong, ulong))image_get_ep (hdr);