lib_arch/board.c: Move malloc initialization before flash_init()

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 <sr@denx.de>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Mike Frysinger <vapier@gentoo.org>
Cc: Scott McNutt <smcnutt@psyent.com>
Cc: Shinya Kuribayashi <shinya.kuribayashi@necel.com>
Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Cc: Daniel Hellstrom <daniel@gaisler.com>
Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: John Rigby <jcrigby@gmail.com>
This commit is contained in:
Stefan Roese 2009-05-11 15:50:12 +02:00 committed by Wolfgang Denk
parent d873133f2b
commit c790b04d23
9 changed files with 32 additions and 28 deletions

View file

@ -316,6 +316,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 #ifndef CONFIG_SYS_NO_FLASH
/* configure available FLASH banks */ /* configure available FLASH banks */
display_flash_config (flash_init ()); display_flash_config (flash_init ());
@ -350,9 +353,6 @@ void start_armboot (void)
} }
#endif /* CONFIG_LCD */ #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) #if defined(CONFIG_CMD_NAND)
puts ("NAND: "); puts ("NAND: ");
nand_init(); /* go init the NAND */ nand_init(); /* go init the NAND */

View file

@ -324,6 +324,10 @@ void board_init_r(gd_t * id, ulong dest_addr)
post_reloc(); post_reloc();
#endif #endif
/* initialize malloc() area */
mem_malloc_init();
malloc_bin_reloc();
#if !defined(CONFIG_SYS_NO_FLASH) #if !defined(CONFIG_SYS_NO_FLASH)
/* Initialize the flash and protect u-boot by default */ /* Initialize the flash and protect u-boot by default */
extern flash_info_t flash_info[]; extern flash_info_t flash_info[];
@ -341,9 +345,6 @@ void board_init_r(gd_t * id, ulong dest_addr)
bd->bi_flashsize = 0; bd->bi_flashsize = 0;
bd->bi_flashoffset = 0; bd->bi_flashoffset = 0;
#endif #endif
/* initialize malloc() area */
mem_malloc_init();
malloc_bin_reloc();
#ifdef CONFIG_CMD_NAND #ifdef CONFIG_CMD_NAND
puts("NAND: "); puts("NAND: ");

View file

@ -519,6 +519,10 @@ void board_init_r (gd_t *id, ulong dest_addr)
*/ */
trap_init (CONFIG_SYS_SDRAM_BASE); trap_init (CONFIG_SYS_SDRAM_BASE);
/* initialize malloc() area */
mem_malloc_init ();
malloc_bin_reloc ();
#if !defined(CONFIG_SYS_NO_FLASH) #if !defined(CONFIG_SYS_NO_FLASH)
puts ("FLASH: "); puts ("FLASH: ");
@ -563,10 +567,6 @@ void board_init_r (gd_t *id, ulong dest_addr)
WATCHDOG_RESET (); WATCHDOG_RESET ();
/* initialize malloc() area */
mem_malloc_init ();
malloc_bin_reloc ();
#ifdef CONFIG_SPI #ifdef CONFIG_SPI
# if !defined(CONFIG_ENV_IS_IN_EEPROM) # if !defined(CONFIG_ENV_IS_IN_EEPROM)
spi_init_f (); spi_init_f ();

View file

@ -370,6 +370,10 @@ void board_init_r (gd_t *id, ulong dest_addr)
bd = gd->bd; bd = gd->bd;
/* initialize malloc() area */
mem_malloc_init();
malloc_bin_reloc();
#ifndef CONFIG_SYS_NO_FLASH #ifndef CONFIG_SYS_NO_FLASH
/* configure available FLASH banks */ /* configure available FLASH banks */
size = flash_init(); size = flash_init();
@ -384,10 +388,6 @@ void board_init_r (gd_t *id, ulong dest_addr)
bd->bi_flashoffset = 0; bd->bi_flashoffset = 0;
#endif #endif
/* initialize malloc() area */
mem_malloc_init();
malloc_bin_reloc();
#ifdef CONFIG_CMD_NAND #ifdef CONFIG_CMD_NAND
puts ("NAND: "); puts ("NAND: ");
nand_init (); /* go init the NAND */ nand_init (); /* go init the NAND */

View file

@ -142,12 +142,14 @@ void board_init (void)
} }
} }
WATCHDOG_RESET ();
mem_malloc_init();
malloc_bin_reloc();
WATCHDOG_RESET (); WATCHDOG_RESET ();
bd->bi_flashsize = flash_init(); bd->bi_flashsize = flash_init();
WATCHDOG_RESET (); WATCHDOG_RESET ();
mem_malloc_init();
malloc_bin_reloc();
env_relocate(); env_relocate();
bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); bd->bi_ip_addr = getenv_IPaddr ("ipaddr");

View file

@ -148,12 +148,14 @@ void board_init (void)
} }
} }
WATCHDOG_RESET ();
mem_malloc_init();
malloc_bin_reloc();
WATCHDOG_RESET (); WATCHDOG_RESET ();
bd->bi_flashsize = flash_init(); bd->bi_flashsize = flash_init();
WATCHDOG_RESET (); WATCHDOG_RESET ();
mem_malloc_init();
malloc_bin_reloc();
env_relocate(); env_relocate();
bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); bd->bi_ip_addr = getenv_IPaddr ("ipaddr");

View file

@ -775,6 +775,10 @@ void board_init_r (gd_t *id, ulong dest_addr)
asm ("sync ; isync"); asm ("sync ; isync");
/* initialize malloc() area */
mem_malloc_init ();
malloc_bin_reloc ();
#if !defined(CONFIG_SYS_NO_FLASH) #if !defined(CONFIG_SYS_NO_FLASH)
puts ("FLASH: "); puts ("FLASH: ");
@ -832,10 +836,6 @@ void board_init_r (gd_t *id, ulong dest_addr)
WATCHDOG_RESET (); WATCHDOG_RESET ();
/* initialize malloc() area */
mem_malloc_init ();
malloc_bin_reloc ();
#ifdef CONFIG_SPI #ifdef CONFIG_SPI
# if !defined(CONFIG_ENV_IS_IN_EEPROM) # if !defined(CONFIG_ENV_IS_IN_EEPROM)
spi_init_f (); spi_init_f ();

View file

@ -146,8 +146,8 @@ init_fnc_t *init_sequence[] =
checkboard, /* Check support board */ checkboard, /* Check support board */
dram_init, /* SDRAM init */ dram_init, /* SDRAM init */
timer_init, /* SuperH Timer (TCNT0 only) init */ timer_init, /* SuperH Timer (TCNT0 only) init */
sh_flash_init, /* Flash memory(NOR) init*/
sh_mem_env_init, sh_mem_env_init,
sh_flash_init, /* Flash memory(NOR) init*/
INIT_FUNC_NAND_INIT/* Flash memory (NAND) init */ INIT_FUNC_NAND_INIT/* Flash memory (NAND) init */
INIT_FUNC_PCI_INIT /* PCI init */ INIT_FUNC_PCI_INIT /* PCI init */
devices_init, devices_init,

View file

@ -331,6 +331,10 @@ void board_init_f(ulong bootflag)
*/ */
interrupt_init(); interrupt_init();
/* initialize malloc() area */
mem_malloc_init();
malloc_bin_reloc();
#if !defined(CONFIG_SYS_NO_FLASH) #if !defined(CONFIG_SYS_NO_FLASH)
puts("FLASH: "); puts("FLASH: ");
@ -371,11 +375,6 @@ void board_init_f(ulong bootflag)
bd->bi_flashoffset = 0; bd->bi_flashoffset = 0;
#endif /* !CONFIG_SYS_NO_FLASH */ #endif /* !CONFIG_SYS_NO_FLASH */
/* initialize malloc() area */
mem_malloc_init();
malloc_bin_reloc();
#ifdef CONFIG_SPI #ifdef CONFIG_SPI
# if !defined(CONFIG_ENV_IS_IN_EEPROM) # if !defined(CONFIG_ENV_IS_IN_EEPROM)
spi_init_f(); spi_init_f();