[new uImage] ppc: Determine if we are booting an OF style
authorKumar Gala <galak@kernel.crashing.org>
Thu, 28 Feb 2008 03:51:44 +0000 (21:51 -0600)
committerMarian Balakowicz <m8@semihalf.com>
Fri, 29 Feb 2008 11:30:03 +0000 (12:30 +0100)
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>
Acked-by: Marian Balakowicz <m8@semihalf.com>
lib_ppc/bootm.c

index fa28b4314e57d4b78732d8cba623eaaf4657a57a..3e89da1c46185fffa580cb9462cd6684a93bfdae 100644 (file)
@@ -71,10 +71,10 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        bd_t    *kbd;
        ulong   ep = 0;
        void    (*kernel)(bd_t *, ulong, ulong, ulong, ulong);
+       ulong   of_size = 0;
 
 #if defined(CONFIG_OF_LIBFDT)
        char    *of_flat_tree = NULL;
-       ulong   of_size = 0;
 #endif
 
        /*
@@ -92,12 +92,19 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        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 defined(CONFIG_OF_LIBFDT)
+       /* find flattened device tree */
+       get_fdt (cmdtp, flag, argc, argv, images, &of_flat_tree, &of_size);
+#endif
 
-       /* allocate space for kernel copy of board info */
-       alloc_current = get_boot_kbd (alloc_current, &kbd);
-       set_clocks_in_mhz(kbd);
+       if (!of_size) {
+               /* 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);
+       }
 
        /* find kernel entry point */
        if (images->legacy_hdr_valid) {
@@ -123,9 +130,6 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
                        sp_limit, get_sp (), &initrd_start, &initrd_end);
 
 #if defined(CONFIG_OF_LIBFDT)
-       /* find flattened device tree */
-       get_fdt (cmdtp, flag, argc, argv, images, &of_flat_tree, &of_size);
-
        alloc_current = fdt_relocate (alloc_current,
                        cmdtp, flag, argc, argv, &of_flat_tree, &of_size);