Patchwork [U-Boot] malloc: make malloc_bin_reloc static

login
register
mail settings
Submitter Gabor Juhos
Date Jan. 22, 2013, 7:10 a.m.
Message ID <1358838638-18236-1-git-send-email-juhosg@openwrt.org>
Download mbox | patch
Permalink /patch/214352/
State Accepted
Delegated to: Tom Rini
Headers show

Comments

Gabor Juhos - Jan. 22, 2013, 7:10 a.m.
On architectures where manual relocation
is needed, the 'malloc_bin_reloc' function
must be called after 'mem_malloc_init'.

Make the 'malloc_bin_reloc' function static
and call it directly from 'mem_malloc_init'
instead of calling that from board_init_{r,f}
functions of the affected architectures.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Andreas BieƟmann <andreas.devel@gmail.com>
Cc: Jason Jin <Jason.jin@freescale.com>
Cc: Macpaul Lin <macpaul@andestech.com>
Cc: Daniel Hellstrom <daniel@gaisler.com>
Cc: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com>
---
 arch/avr32/lib/board.c |    1 -
 arch/m68k/lib/board.c  |    1 -
 arch/mips/lib/board.c  |    1 -
 arch/nds32/lib/board.c |    1 -
 arch/sparc/lib/board.c |    1 -
 common/dlmalloc.c      |    6 +++++-
 include/malloc.h       |    1 -
 7 files changed, 5 insertions(+), 7 deletions(-)
Tom Rini - Feb. 20, 2013, 3 p.m.
On Mon, Jan 21, 2013 at 09:10:38PM -0000, Gabor Juhos wrote:

> On architectures where manual relocation
> is needed, the 'malloc_bin_reloc' function
> must be called after 'mem_malloc_init'.
> 
> Make the 'malloc_bin_reloc' function static
> and call it directly from 'mem_malloc_init'
> instead of calling that from board_init_{r,f}
> functions of the affected architectures.
> 
> Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
> Cc: Wolfgang Denk <wd@denx.de>
> Cc: Andreas Bie??mann <andreas.devel@gmail.com>
> Cc: Jason Jin <Jason.jin@freescale.com>
> Cc: Macpaul Lin <macpaul@andestech.com>
> Cc: Daniel Hellstrom <daniel@gaisler.com>
> Cc: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com>

Applied to u-boot/master, thanks!

Patch

diff --git a/arch/avr32/lib/board.c b/arch/avr32/lib/board.c
index e3287c4..76cbea5 100644
--- a/arch/avr32/lib/board.c
+++ b/arch/avr32/lib/board.c
@@ -286,7 +286,6 @@  void board_init_r(gd_t *new_gd, ulong dest_addr)
 	/* The malloc area is right below the monitor image in RAM */
 	mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
 			CONFIG_SYS_MALLOC_LEN, CONFIG_SYS_MALLOC_LEN);
-	malloc_bin_reloc();
 	dma_alloc_init();
 
 	enable_interrupts();
diff --git a/arch/m68k/lib/board.c b/arch/m68k/lib/board.c
index e934cb6..64f096a 100644
--- a/arch/m68k/lib/board.c
+++ b/arch/m68k/lib/board.c
@@ -449,7 +449,6 @@  void board_init_r (gd_t *id, ulong dest_addr)
 	/* The Malloc area is immediately below the monitor copy in DRAM */
 	mem_malloc_init (CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
 			TOTAL_MALLOC_LEN, TOTAL_MALLOC_LEN);
-	malloc_bin_reloc ();
 
 #if !defined(CONFIG_SYS_NO_FLASH)
 	puts ("Flash: ");
diff --git a/arch/mips/lib/board.c b/arch/mips/lib/board.c
index d79e183..51c08dd 100644
--- a/arch/mips/lib/board.c
+++ b/arch/mips/lib/board.c
@@ -283,7 +283,6 @@  void board_init_r(gd_t *id, ulong dest_addr)
 	/* The Malloc area is immediately below the monitor copy in DRAM */
 	mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
 			TOTAL_MALLOC_LEN, TOTAL_MALLOC_LEN);
-	malloc_bin_reloc();
 
 #ifndef CONFIG_SYS_NO_FLASH
 	/* configure available FLASH banks */
diff --git a/arch/nds32/lib/board.c b/arch/nds32/lib/board.c
index 91395ca..dbfb468 100644
--- a/arch/nds32/lib/board.c
+++ b/arch/nds32/lib/board.c
@@ -331,7 +331,6 @@  void board_init_r(gd_t *id, ulong dest_addr)
 	/* The Malloc area is immediately below the monitor copy in DRAM */
 	malloc_start = dest_addr - TOTAL_MALLOC_LEN;
 	mem_malloc_init(malloc_start, TOTAL_MALLOC_LEN);
-	malloc_bin_reloc();
 
 #ifndef CONFIG_SYS_NO_FLASH
 	/* configure available FLASH banks */
diff --git a/arch/sparc/lib/board.c b/arch/sparc/lib/board.c
index 1b5e995..79fb4c8 100644
--- a/arch/sparc/lib/board.c
+++ b/arch/sparc/lib/board.c
@@ -271,7 +271,6 @@  void board_init_f(ulong bootflag)
 	/* The Malloc area is immediately below the monitor copy in RAM */
 	mem_malloc_init(CONFIG_SYS_MALLOC_BASE,
 			CONFIG_SYS_MALLOC_END - CONFIG_SYS_MALLOC_BASE);
-	malloc_bin_reloc();
 
 #if !defined(CONFIG_SYS_NO_FLASH)
 	puts("Flash: ");
diff --git a/common/dlmalloc.c b/common/dlmalloc.c
index b2f0a1a..2a9d169 100644
--- a/common/dlmalloc.c
+++ b/common/dlmalloc.c
@@ -1485,7 +1485,7 @@  static mbinptr av_[NAV * 2 + 2] = {
 };
 
 #ifdef CONFIG_NEEDS_MANUAL_RELOC
-void malloc_bin_reloc (void)
+static void malloc_bin_reloc(void)
 {
 	mbinptr *p = &av_[2];
 	size_t i;
@@ -1493,6 +1493,8 @@  void malloc_bin_reloc (void)
 	for (i = 2; i < ARRAY_SIZE(av_); ++i, ++p)
 		*p = (mbinptr)((ulong)*p + gd->reloc_off);
 }
+#else
+static inline void malloc_bin_reloc(void) {}
 #endif
 
 ulong mem_malloc_start = 0;
@@ -1526,6 +1528,8 @@  void mem_malloc_init(ulong start, ulong size)
 	mem_malloc_brk = start;
 
 	memset((void *)mem_malloc_start, 0, size);
+
+	malloc_bin_reloc();
 }
 
 /* field-extraction macros */
diff --git a/include/malloc.h b/include/malloc.h
index 84ecf79..6295929 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -937,7 +937,6 @@  extern ulong mem_malloc_end;
 extern ulong mem_malloc_brk;
 
 void mem_malloc_init(ulong start, ulong size);
-void malloc_bin_reloc(void);
 
 #ifdef __cplusplus
 };  /* end of extern "C" */