This patch moves the malloc initialization before calling flash_init().
Upcoming changes to the NOR FLASH common CFI driver with optional
MTD infrastructure and MTD concatenation support will call malloc().
And nothing really speaks against enabling malloc just a little earlier
in the boot stage. Some architectures already enable malloc before
calling flash_init() so they don't need any changes here.

Signed-off-by: Stefan Roese <s...@denx.de>
Cc: Wolfgang Denk <w...@denx.de>
Cc: Mike Frysinger <vap...@gentoo.org>
Cc: Scott McNutt <smcn...@psyent.com>
Cc: Shinya Kuribayashi <shinya.kuribaya...@necel.com>
Cc: Nobuhiro Iwamatsu <iwama...@nigauri.org>
Cc: Daniel Hellstrom <dan...@gaisler.com>
Cc: Jean-Christophe PLAGNIOL-VILLARD <plagn...@jcrosoft.com>
Cc: John Rigby <jcri...@gmail.com>
---
If nobody from the platforms custodians objects against this patch
then I suggest that Wolfgang pulls it directly into next.

Thanks,
Stefan

 lib_arm/board.c      |    6 +++---
 lib_blackfin/board.c |    7 ++++---
 lib_m68k/board.c     |    8 ++++----
 lib_mips/board.c     |    8 ++++----
 lib_nios/board.c     |    6 ++++--
 lib_nios2/board.c    |    6 ++++--
 lib_ppc/board.c      |    8 ++++----
 lib_sh/board.c       |    2 +-
 lib_sparc/board.c    |    9 ++++-----
 9 files changed, 32 insertions(+), 28 deletions(-)

diff --git a/lib_arm/board.c b/lib_arm/board.c
index 09eaaf2..bbed820 100644
--- a/lib_arm/board.c
+++ b/lib_arm/board.c
@@ -313,6 +313,9 @@ void start_armboot (void)
                }
        }
 
+       /* armboot_start is defined in the board-specific linker script */
+       mem_malloc_init (_armboot_start - CONFIG_SYS_MALLOC_LEN);
+
 #ifndef CONFIG_SYS_NO_FLASH
        /* configure available FLASH banks */
        display_flash_config (flash_init ());
@@ -347,9 +350,6 @@ void start_armboot (void)
        }
 #endif /* CONFIG_LCD */
 
-       /* armboot_start is defined in the board-specific linker script */
-       mem_malloc_init (_armboot_start - CONFIG_SYS_MALLOC_LEN);
-
 #if defined(CONFIG_CMD_NAND)
        puts ("NAND:  ");
        nand_init();            /* go init the NAND */
diff --git a/lib_blackfin/board.c b/lib_blackfin/board.c
index c223711..1df8370 100644
--- a/lib_blackfin/board.c
+++ b/lib_blackfin/board.c
@@ -309,6 +309,10 @@ void board_init_r(gd_t * id, ulong dest_addr)
        post_reloc();
 #endif
 
+       /* initialize malloc() area */
+       mem_malloc_init();
+       malloc_bin_reloc();
+
 #if    !defined(CONFIG_SYS_NO_FLASH)
        /* Initialize the flash and protect u-boot by default */
        extern flash_info_t flash_info[];
@@ -326,9 +330,6 @@ void board_init_r(gd_t * id, ulong dest_addr)
        bd->bi_flashsize = 0;
        bd->bi_flashoffset = 0;
 #endif
-       /* initialize malloc() area */
-       mem_malloc_init();
-       malloc_bin_reloc();
 
 #ifdef CONFIG_CMD_NAND
        puts("NAND:  ");
diff --git a/lib_m68k/board.c b/lib_m68k/board.c
index 583ce10..76b1f54 100644
--- a/lib_m68k/board.c
+++ b/lib_m68k/board.c
@@ -519,6 +519,10 @@ void board_init_r (gd_t *id, ulong dest_addr)
         */
        trap_init (CONFIG_SYS_SDRAM_BASE);
 
+       /* initialize malloc() area */
+       mem_malloc_init ();
+       malloc_bin_reloc ();
+
 #if !defined(CONFIG_SYS_NO_FLASH)
        puts ("FLASH: ");
 
@@ -563,10 +567,6 @@ void board_init_r (gd_t *id, ulong dest_addr)
 
        WATCHDOG_RESET ();
 
-       /* initialize malloc() area */
-       mem_malloc_init ();
-       malloc_bin_reloc ();
-
 #ifdef CONFIG_SPI
 # if !defined(CONFIG_ENV_IS_IN_EEPROM)
        spi_init_f ();
diff --git a/lib_mips/board.c b/lib_mips/board.c
index dfe6831..f483211 100644
--- a/lib_mips/board.c
+++ b/lib_mips/board.c
@@ -371,6 +371,10 @@ void board_init_r (gd_t *id, ulong dest_addr)
 
        bd = gd->bd;
 
+       /* initialize malloc() area */
+       mem_malloc_init();
+       malloc_bin_reloc();
+
 #ifndef CONFIG_SYS_NO_FLASH
        /* configure available FLASH banks */
        size = flash_init();
@@ -385,10 +389,6 @@ void board_init_r (gd_t *id, ulong dest_addr)
        bd->bi_flashoffset = 0;
 #endif
 
-       /* initialize malloc() area */
-       mem_malloc_init();
-       malloc_bin_reloc();
-
 #ifdef CONFIG_CMD_NAND
        puts ("NAND:  ");
        nand_init ();           /* go init the NAND */
diff --git a/lib_nios/board.c b/lib_nios/board.c
index 024beb5..fc63793 100644
--- a/lib_nios/board.c
+++ b/lib_nios/board.c
@@ -143,11 +143,13 @@ void board_init (void)
        }
 
        WATCHDOG_RESET ();
+       mem_malloc_init();
+       malloc_bin_reloc();
+
+       WATCHDOG_RESET ();
        bd->bi_flashsize = flash_init();
 
        WATCHDOG_RESET ();
-       mem_malloc_init();
-       malloc_bin_reloc();
        env_relocate();
 
        bd->bi_ip_addr = getenv_IPaddr ("ipaddr");
diff --git a/lib_nios2/board.c b/lib_nios2/board.c
index d759f0f..7986bdc 100644
--- a/lib_nios2/board.c
+++ b/lib_nios2/board.c
@@ -149,11 +149,13 @@ void board_init (void)
        }
 
        WATCHDOG_RESET ();
+       mem_malloc_init();
+       malloc_bin_reloc();
+
+       WATCHDOG_RESET ();
        bd->bi_flashsize = flash_init();
 
        WATCHDOG_RESET ();
-       mem_malloc_init();
-       malloc_bin_reloc();
        env_relocate();
 
        bd->bi_ip_addr = getenv_IPaddr ("ipaddr");
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index f69c5f4..7b76886 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -761,6 +761,10 @@ void board_init_r (gd_t *id, ulong dest_addr)
 
        asm ("sync ; isync");
 
+       /* initialize malloc() area */
+       mem_malloc_init ();
+       malloc_bin_reloc ();
+
 #if !defined(CONFIG_SYS_NO_FLASH)
        puts ("FLASH: ");
 
@@ -818,10 +822,6 @@ void board_init_r (gd_t *id, ulong dest_addr)
 
        WATCHDOG_RESET ();
 
-       /* initialize malloc() area */
-       mem_malloc_init ();
-       malloc_bin_reloc ();
-
 #ifdef CONFIG_SPI
 # if !defined(CONFIG_ENV_IS_IN_EEPROM)
        spi_init_f ();
diff --git a/lib_sh/board.c b/lib_sh/board.c
index d4cc85c..d0dcf31 100644
--- a/lib_sh/board.c
+++ b/lib_sh/board.c
@@ -156,8 +156,8 @@ init_fnc_t *init_sequence[] =
        checkboard,             /* Check support board */
        dram_init,              /* SDRAM init */
        timer_init,             /* SuperH Timer (TCNT0 only) init */
-       sh_flash_init,  /* Flash memory(NOR) init*/
        sh_mem_env_init,
+       sh_flash_init,  /* Flash memory(NOR) init*/
        INIT_FUNC_NAND_INIT/* Flash memory (NAND) init */
        INIT_FUNC_PCI_INIT      /* PCI init */
        devices_init,
diff --git a/lib_sparc/board.c b/lib_sparc/board.c
index e972d3e..862bce8 100644
--- a/lib_sparc/board.c
+++ b/lib_sparc/board.c
@@ -331,6 +331,10 @@ void board_init_f(ulong bootflag)
         */
        interrupt_init();
 
+       /* initialize malloc() area */
+       mem_malloc_init();
+       malloc_bin_reloc();
+
 #if !defined(CONFIG_SYS_NO_FLASH)
        puts("FLASH: ");
 
@@ -371,11 +375,6 @@ void board_init_f(ulong bootflag)
        bd->bi_flashoffset = 0;
 #endif                         /* !CONFIG_SYS_NO_FLASH */
 
-       /* initialize malloc() area */
-       mem_malloc_init();
-
-       malloc_bin_reloc();
-
 #ifdef CONFIG_SPI
 # if !defined(CONFIG_ENV_IS_IN_EEPROM)
        spi_init_f();
-- 
1.6.2.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to