summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Tyser <ptyser@xes-inc.com>2009-08-21 23:05:19 -0500
committerWolfgang Denk <wd@denx.de>2009-09-04 21:45:39 +0200
commit5e93bd1c9aaea886c5e5c7c1b6114ab36c30668f (patch)
treeec61a4a1610baf8ebfad8fc08688c393368c4dbd
parent65f6f07b72a71b83d775c4d20d7ebcd6b2d2086d (diff)
Consolidate arch-specific sbrk() implementations
Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
-rw-r--r--common/dlmalloc.c18
-rw-r--r--include/malloc.h6
-rw-r--r--lib_arm/board.c20
-rw-r--r--lib_avr32/board.c19
-rw-r--r--lib_blackfin/board.c20
-rw-r--r--lib_i386/board.c21
-rw-r--r--lib_m68k/board.c20
-rw-r--r--lib_microblaze/board.c19
-rw-r--r--lib_mips/board.c19
-rw-r--r--lib_nios/board.c20
-rw-r--r--lib_nios2/board.c20
-rw-r--r--lib_ppc/board.c19
-rw-r--r--lib_sh/board.c18
-rw-r--r--lib_sparc/board.c19
14 files changed, 28 insertions, 230 deletions
diff --git a/common/dlmalloc.c b/common/dlmalloc.c
index 4a185620f..f3bced463 100644
--- a/common/dlmalloc.c
+++ b/common/dlmalloc.c
@@ -1502,7 +1502,23 @@ void malloc_bin_reloc (void)
*p++ += gd->reloc_off;
}
}
-
+
+ulong mem_malloc_start = 0;
+ulong mem_malloc_end = 0;
+ulong mem_malloc_brk = 0;
+
+void *sbrk(ptrdiff_t increment)
+{
+ ulong old = mem_malloc_brk;
+ ulong new = old + increment;
+
+ if ((new < mem_malloc_start) || (new > mem_malloc_end))
+ return NULL;
+
+ mem_malloc_brk = new;
+
+ return (void *)old;
+}
/* field-extraction macros */
diff --git a/include/malloc.h b/include/malloc.h
index a38464e62..0382169b6 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -937,6 +937,12 @@ int mALLOPt();
struct mallinfo mALLINFo();
#endif
+/*
+ * Begin and End of memory area for malloc(), and current "brk"
+ */
+extern ulong mem_malloc_start;
+extern ulong mem_malloc_end;
+extern ulong mem_malloc_brk;
#ifdef __cplusplus
}; /* end of extern "C" */
diff --git a/lib_arm/board.c b/lib_arm/board.c
index fa87d5137..62b787443 100644
--- a/lib_arm/board.c
+++ b/lib_arm/board.c
@@ -82,13 +82,6 @@ extern void rtl8019_get_enetaddr (uchar * addr);
#include <i2c.h>
#endif
-/*
- * Begin and End of memory area for malloc(), and current "brk"
- */
-static ulong mem_malloc_start = 0;
-static ulong mem_malloc_end = 0;
-static ulong mem_malloc_brk = 0;
-
static
void mem_malloc_init (ulong dest_addr)
{
@@ -100,19 +93,6 @@ void mem_malloc_init (ulong dest_addr)
mem_malloc_end - mem_malloc_start);
}
-void *sbrk (ptrdiff_t increment)
-{
- ulong old = mem_malloc_brk;
- ulong new = old + increment;
-
- if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
- return (NULL);
- }
- mem_malloc_brk = new;
-
- return ((void *) old);
-}
-
/************************************************************************
* Coloured LED functionality
diff --git a/lib_avr32/board.c b/lib_avr32/board.c
index e2b0a2e1a..03a520cdd 100644
--- a/lib_avr32/board.c
+++ b/lib_avr32/board.c
@@ -41,13 +41,6 @@ const char version_string[] =
unsigned long monitor_flash_len;
-/*
- * Begin and end of memory area for malloc(), and current "brk"
- */
-static unsigned long mem_malloc_start = 0;
-static unsigned long mem_malloc_end = 0;
-static unsigned long mem_malloc_brk = 0;
-
/* Weak aliases for optional board functions */
static int __do_nothing(void)
{
@@ -73,18 +66,6 @@ static void mem_malloc_init(void)
mem_malloc_end - mem_malloc_start);
}
-void *sbrk(ptrdiff_t increment)
-{
- unsigned long old = mem_malloc_brk;
- unsigned long new = old + increment;
-
- if ((new < mem_malloc_start) || (new > mem_malloc_end))
- return NULL;
-
- mem_malloc_brk = new;
- return ((void *)old);
-}
-
#ifdef CONFIG_SYS_DMA_ALLOC_LEN
#include <asm/arch/cacheflush.h>
#include <asm/io.h>
diff --git a/lib_blackfin/board.c b/lib_blackfin/board.c
index 5b9efde7a..9c405ba4b 100644
--- a/lib_blackfin/board.c
+++ b/lib_blackfin/board.c
@@ -44,27 +44,13 @@ static inline void serial_early_puts(const char *s)
#endif
}
-static void *mem_malloc_start, *mem_malloc_end, *mem_malloc_brk;
-
static void mem_malloc_init(void)
{
- mem_malloc_start = (void *)CONFIG_SYS_MALLOC_BASE;
- mem_malloc_end = (void *)(CONFIG_SYS_MALLOC_BASE + CONFIG_SYS_MALLOC_LEN);
+ mem_malloc_start = (ulong)CONFIG_SYS_MALLOC_BASE;
+ mem_malloc_end = (ulong)(CONFIG_SYS_MALLOC_BASE + CONFIG_SYS_MALLOC_LEN);
mem_malloc_brk = mem_malloc_start;
- memset(mem_malloc_start, 0, mem_malloc_end - mem_malloc_start);
-}
-
-void *sbrk(ptrdiff_t increment)
-{
- void *old = mem_malloc_brk;
- void *new = old + increment;
-
- if (new < mem_malloc_start || new > mem_malloc_end)
- return NULL;
-
- mem_malloc_brk = new;
- return old;
+ memset((void*)mem_malloc_start, 0, mem_malloc_end - mem_malloc_start);
}
static int display_banner(void)
diff --git a/lib_i386/board.c b/lib_i386/board.c
index 54ef6e75a..0262b5e2c 100644
--- a/lib_i386/board.c
+++ b/lib_i386/board.c
@@ -73,14 +73,6 @@ ulong i386boot_bios_size = (ulong)&_i386boot_bios_size; /* size of BIOS
const char version_string[] =
U_BOOT_VERSION" (" U_BOOT_DATE " - " U_BOOT_TIME ")";
-
-/*
- * Begin and End of memory area for malloc(), and current "brk"
- */
-static ulong mem_malloc_start = 0;
-static ulong mem_malloc_end = 0;
-static ulong mem_malloc_brk = 0;
-
static int mem_malloc_init(void)
{
/* start malloc area right after the stack */
@@ -96,19 +88,6 @@ static int mem_malloc_init(void)
return 0;
}
-void *sbrk (ptrdiff_t increment)
-{
- ulong old = mem_malloc_brk;
- ulong new = old + increment;
-
- if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
- return (NULL);
- }
- mem_malloc_brk = new;
-
- return ((void *) old);
-}
-
/************************************************************************
* Init Utilities *
************************************************************************
diff --git a/lib_m68k/board.c b/lib_m68k/board.c
index 483c9b6df..4392bccdb 100644
--- a/lib_m68k/board.c
+++ b/lib_m68k/board.c
@@ -101,13 +101,6 @@ extern int watchdog_disable(void);
ulong monitor_flash_len;
-/*
- * Begin and End of memory area for malloc(), and current "brk"
- */
-static ulong mem_malloc_start = 0;
-static ulong mem_malloc_end = 0;
-static ulong mem_malloc_brk = 0;
-
/************************************************************************
* Utilities *
************************************************************************
@@ -129,19 +122,6 @@ static void mem_malloc_init (void)
mem_malloc_end - mem_malloc_start);
}
-void *sbrk (ptrdiff_t increment)
-{
- ulong old = mem_malloc_brk;
- ulong new = old + increment;
-
- if ((new < mem_malloc_start) ||
- (new > mem_malloc_end) ) {
- return (NULL);
- }
- mem_malloc_brk = new;
- return ((void *)old);
-}
-
/*
* All attempts to come up with a "common" initialization sequence
* that works for all boards and architectures failed: some of the
diff --git a/lib_microblaze/board.c b/lib_microblaze/board.c
index cfed5fefc..fc25a7530 100644
--- a/lib_microblaze/board.c
+++ b/lib_microblaze/board.c
@@ -47,13 +47,6 @@ extern int getenv_IPaddr (char *);
#endif
/*
- * Begin and End of memory area for malloc(), and current "brk"
- */
-static ulong mem_malloc_start;
-static ulong mem_malloc_end;
-static ulong mem_malloc_brk;
-
-/*
* The Malloc area is immediately below the monitor copy in DRAM
* aka CONFIG_SYS_MONITOR_BASE - Note there is no need for reloc_off
* as our monitory code is run from SDRAM
@@ -66,18 +59,6 @@ static void mem_malloc_init (void)
memset ((void *)mem_malloc_start, 0, mem_malloc_end - mem_malloc_start);
}
-void *sbrk (ptrdiff_t increment)
-{
- ulong old = mem_malloc_brk;
- ulong new = old + increment;
-
- if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
- return (NULL);
- }
- mem_malloc_brk = new;
- return ((void *)old);
-}
-
/*
* All attempts to come up with a "common" initialization sequence
* that works for all boards and architectures failed: some of the
diff --git a/lib_mips/board.c b/lib_mips/board.c
index aa5b1295c..68a3697f7 100644
--- a/lib_mips/board.c
+++ b/lib_mips/board.c
@@ -60,13 +60,6 @@ const char version_string[] =
static char *failed = "*** failed ***\n";
/*
- * Begin and End of memory area for malloc(), and current "brk"
- */
-static ulong mem_malloc_start;
-static ulong mem_malloc_end;
-static ulong mem_malloc_brk;
-
-/*
* mips_io_port_base is the begin of the address space to which x86 style
* I/O ports are mapped.
*/
@@ -97,18 +90,6 @@ static void mem_malloc_init (void)
mem_malloc_end - mem_malloc_start);
}
-void *sbrk (ptrdiff_t increment)
-{
- ulong old = mem_malloc_brk;
- ulong new = old + increment;
-
- if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
- return (NULL);
- }
- mem_malloc_brk = new;
- return ((void *) old);
-}
-
static int init_func_ram (void)
{
diff --git a/lib_nios/board.c b/lib_nios/board.c
index cd234578b..30cdb477c 100644
--- a/lib_nios/board.c
+++ b/lib_nios/board.c
@@ -27,6 +27,7 @@
#include <common.h>
#include <stdio_dev.h>
#include <watchdog.h>
+#include <malloc.h>
#include <net.h>
#ifdef CONFIG_STATUS_LED
#include <status_led.h>
@@ -52,13 +53,6 @@ extern void malloc_bin_reloc (void);
typedef int (init_fnc_t) (void);
/*
- * Begin and End of memory area for malloc(), and current "brk"
- */
-static ulong mem_malloc_start = 0;
-static ulong mem_malloc_end = 0;
-static ulong mem_malloc_brk = 0;
-
-/*
* The Malloc area is immediately below the monitor copy in RAM
*/
static void mem_malloc_init (void)
@@ -71,18 +65,6 @@ static void mem_malloc_init (void)
mem_malloc_end - mem_malloc_start);
}
-void *sbrk (ptrdiff_t increment)
-{
- ulong old = mem_malloc_brk;
- ulong new = old + increment;
-
- if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
- return (NULL);
- }
- mem_malloc_brk = new;
- return ((void *) old);
-}
-
/************************************************************************
* Initialization sequence *
diff --git a/lib_nios2/board.c b/lib_nios2/board.c
index b142c5961..e5a8d5406 100644
--- a/lib_nios2/board.c
+++ b/lib_nios2/board.c
@@ -27,6 +27,7 @@
#include <common.h>
#include <stdio_dev.h>
#include <watchdog.h>
+#include <malloc.h>
#include <net.h>
#ifdef CONFIG_STATUS_LED
#include <status_led.h>
@@ -55,13 +56,6 @@ extern void malloc_bin_reloc (void);
typedef int (init_fnc_t) (void);
/*
- * Begin and End of memory area for malloc(), and current "brk"
- */
-static ulong mem_malloc_start = 0;
-static ulong mem_malloc_end = 0;
-static ulong mem_malloc_brk = 0;
-
-/*
* The Malloc area is immediately below the monitor copy in RAM
*/
static void mem_malloc_init (void)
@@ -74,18 +68,6 @@ static void mem_malloc_init (void)
mem_malloc_end - mem_malloc_start);
}
-void *sbrk (ptrdiff_t increment)
-{
- ulong old = mem_malloc_brk;
- ulong new = old + increment;
-
- if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
- return (NULL);
- }
- mem_malloc_brk = new;
- return ((void *) old);
-}
-
/************************************************************************
* Initialization sequence *
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index 9faf7f2a0..f0cc3ce8d 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -136,13 +136,6 @@ ulong monitor_flash_len;
#include <bedbug/type.h>
#endif
-/*
- * Begin and End of memory area for malloc(), and current "brk"
- */
-static ulong mem_malloc_start = 0;
-static ulong mem_malloc_end = 0;
-static ulong mem_malloc_brk = 0;
-
/************************************************************************
* Utilities *
************************************************************************
@@ -164,18 +157,6 @@ static void mem_malloc_init (void)
mem_malloc_end - mem_malloc_start);
}
-void *sbrk (ptrdiff_t increment)
-{
- ulong old = mem_malloc_brk;
- ulong new = old + increment;
-
- if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
- return (NULL);
- }
- mem_malloc_brk = new;
- return ((void *) old);
-}
-
/*
* All attempts to come up with a "common" initialization sequence
* that works for all boards and architectures failed: some of the
diff --git a/lib_sh/board.c b/lib_sh/board.c
index 829455d8b..001e89c71 100644
--- a/lib_sh/board.c
+++ b/lib_sh/board.c
@@ -38,10 +38,6 @@ const char version_string[] = U_BOOT_VERSION" ("U_BOOT_DATE" - "U_BOOT_TIME")";
unsigned long monitor_flash_len = CONFIG_SYS_MONITOR_LEN;
-static unsigned long mem_malloc_start;
-static unsigned long mem_malloc_end;
-static unsigned long mem_malloc_brk;
-
static void mem_malloc_init(void)
{
@@ -52,20 +48,6 @@ static void mem_malloc_init(void)
(mem_malloc_end - mem_malloc_start));
}
-void *sbrk(ptrdiff_t increment)
-{
- unsigned long old = mem_malloc_brk;
- unsigned long new = old + increment;
-
- if ((new < mem_malloc_start) ||
- (new > mem_malloc_end)) {
- return NULL;
- }
-
- mem_malloc_brk = new;
- return (void *) old;
-}
-
static int sh_flash_init(void)
{
DECLARE_GLOBAL_DATA_PTR;
diff --git a/lib_sparc/board.c b/lib_sparc/board.c
index d40834b7b..37b7c0a59 100644
--- a/lib_sparc/board.c
+++ b/lib_sparc/board.c
@@ -74,13 +74,6 @@ static char *failed = "*** failed ***\n";
ulong monitor_flash_len;
-/*
- * Begin and End of memory area for malloc(), and current "brk"
- */
-static ulong mem_malloc_start = 0;
-static ulong mem_malloc_end = 0;
-static ulong mem_malloc_brk = 0;
-
/************************************************************************
* Utilities *
************************************************************************
@@ -97,18 +90,6 @@ static void mem_malloc_init(void)
memset((void *)mem_malloc_start, 0, mem_malloc_end - mem_malloc_start);
}
-void *sbrk(ptrdiff_t increment)
-{
- ulong old = mem_malloc_brk;
- ulong new = old + increment;
-
- if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
- return (NULL);
- }
- mem_malloc_brk = new;
- return ((void *)old);
-}
-
/***********************************************************************/
/************************************************************************