]> git.sur5r.net Git - u-boot/blobdiff - arch/arm/lib/bootm.c
Replace __bss_end__ with __bss_end
[u-boot] / arch / arm / lib / bootm.c
index cba457fcc9ee1a8b7edd79cc965de16501c65dd6..f3b30c57a37cd03b0c368dcd73aff49fc0b29478 100644 (file)
 #include <image.h>
 #include <u-boot/zlib.h>
 #include <asm/byteorder.h>
-#include <fdt.h>
 #include <libfdt.h>
 #include <fdt_support.h>
 #include <asm/bootm.h>
+#include <linux/compiler.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -69,8 +69,8 @@ void arch_lmb_reserve(struct lmb *lmb)
        sp = get_sp();
        debug("## Current stack ends at 0x%08lx ", sp);
 
-       /* adjust sp by 1K to be safe */
-       sp -= 1024;
+       /* adjust sp by 4K to be safe */
+       sp -= 4096;
        lmb_reserve(lmb, sp,
                    gd->bd->bi_dram[0].start + gd->bd->bi_dram[0].size - sp);
 }
@@ -96,6 +96,9 @@ static void announce_and_cleanup(void)
 {
        printf("\nStarting kernel ...\n\n");
        bootstage_mark_name(BOOTSTAGE_ID_BOOTM_HANDOFF, "start_kernel");
+#ifdef CONFIG_BOOTSTAGE_FDT
+       bootstage_fdt_add_report();
+#endif
 #ifdef CONFIG_BOOTSTAGE_REPORT
        bootstage_report();
 #endif
@@ -256,12 +259,18 @@ static int create_fdt(bootm_headers_t *images)
 
        fdt_chosen(*of_flat_tree, 1);
        fixup_memory_node(*of_flat_tree);
+       fdt_fixup_ethernet(*of_flat_tree);
        fdt_initrd(*of_flat_tree, *initrd_start, *initrd_end, 1);
+#ifdef CONFIG_OF_BOARD_SETUP
+       ft_board_setup(*of_flat_tree, gd->bd);
+#endif
 
        return 0;
 }
 #endif
 
+__weak void setup_board_tags(struct tag **in_params) {}
+
 /* Subcommand: PREP */
 static void boot_prep_linux(bootm_headers_t *images)
 {
@@ -303,6 +312,7 @@ static void boot_prep_linux(bootm_headers_t *images)
                        setup_initrd_tag(gd->bd, images->rd_start,
                        images->rd_end);
 #endif
+               setup_board_tags(&params);
                setup_end_tag(gd->bd);
 #else /* all tags */
                printf("FDT and ATAGS support not compiled in - hanging\n");