mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-20 11:40:25 +09:00
Consolidate arch-specific mem_malloc_init() implementations
Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
This commit is contained in:
parent
832f4377d6
commit
bdb2802f4a
@ -1520,6 +1520,21 @@ void *sbrk(ptrdiff_t increment)
|
|||||||
return (void *)old;
|
return (void *)old;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef CONFIG_X86
|
||||||
|
/*
|
||||||
|
* x86 boards use a slightly different init sequence thus they implement
|
||||||
|
* their own version of mem_malloc_init()
|
||||||
|
*/
|
||||||
|
void mem_malloc_init(ulong start, ulong size)
|
||||||
|
{
|
||||||
|
mem_malloc_start = start;
|
||||||
|
mem_malloc_end = start + size;
|
||||||
|
mem_malloc_brk = start;
|
||||||
|
|
||||||
|
memset((void *)mem_malloc_start, 0, size);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* field-extraction macros */
|
/* field-extraction macros */
|
||||||
|
|
||||||
#define first(b) ((b)->fd)
|
#define first(b) ((b)->fd)
|
||||||
|
@ -944,6 +944,8 @@ extern ulong mem_malloc_start;
|
|||||||
extern ulong mem_malloc_end;
|
extern ulong mem_malloc_end;
|
||||||
extern ulong mem_malloc_brk;
|
extern ulong mem_malloc_brk;
|
||||||
|
|
||||||
|
void mem_malloc_init(ulong start, ulong size);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}; /* end of extern "C" */
|
}; /* end of extern "C" */
|
||||||
#endif
|
#endif
|
||||||
|
@ -82,16 +82,6 @@ extern void rtl8019_get_enetaddr (uchar * addr);
|
|||||||
#include <i2c.h>
|
#include <i2c.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static
|
|
||||||
void mem_malloc_init (ulong start, ulong size)
|
|
||||||
{
|
|
||||||
mem_malloc_start = start;
|
|
||||||
mem_malloc_end = start + size;
|
|
||||||
mem_malloc_brk = start;
|
|
||||||
|
|
||||||
memset ((void *)mem_malloc_start, 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* Coloured LED functionality
|
* Coloured LED functionality
|
||||||
|
@ -49,19 +49,6 @@ static int __do_nothing(void)
|
|||||||
int board_postclk_init(void) __attribute__((weak, alias("__do_nothing")));
|
int board_postclk_init(void) __attribute__((weak, alias("__do_nothing")));
|
||||||
int board_early_init_r(void) __attribute__((weak, alias("__do_nothing")));
|
int board_early_init_r(void) __attribute__((weak, alias("__do_nothing")));
|
||||||
|
|
||||||
/* The malloc area is right below the monitor image in RAM */
|
|
||||||
static void mem_malloc_init(ulong start, ulong size)
|
|
||||||
{
|
|
||||||
mem_malloc_start = start;
|
|
||||||
mem_malloc_end = start + size;
|
|
||||||
mem_malloc_brk = start;
|
|
||||||
|
|
||||||
printf("malloc: Using memory from 0x%08lx to 0x%08lx\n",
|
|
||||||
mem_malloc_start, mem_malloc_end);
|
|
||||||
|
|
||||||
memset((void *)mem_malloc_start, 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_SYS_DMA_ALLOC_LEN
|
#ifdef CONFIG_SYS_DMA_ALLOC_LEN
|
||||||
#include <asm/arch/cacheflush.h>
|
#include <asm/arch/cacheflush.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
@ -308,6 +295,8 @@ void board_init_r(gd_t *new_gd, ulong dest_addr)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
timer_init();
|
timer_init();
|
||||||
|
|
||||||
|
/* The malloc area is right below the monitor image in RAM */
|
||||||
mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
|
mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
|
||||||
CONFIG_SYS_MALLOC_LEN, CONFIG_SYS_MALLOC_LEN);
|
CONFIG_SYS_MALLOC_LEN, CONFIG_SYS_MALLOC_LEN);
|
||||||
malloc_bin_reloc();
|
malloc_bin_reloc();
|
||||||
|
@ -44,15 +44,6 @@ static inline void serial_early_puts(const char *s)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mem_malloc_init(ulong start, ulong size)
|
|
||||||
{
|
|
||||||
mem_malloc_start = start;
|
|
||||||
mem_malloc_end = start + size;
|
|
||||||
mem_malloc_brk = start;
|
|
||||||
|
|
||||||
memset((void*)mem_malloc_start, 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int display_banner(void)
|
static int display_banner(void)
|
||||||
{
|
{
|
||||||
printf("\n\n%s\n\n", version_string);
|
printf("\n\n%s\n\n", version_string);
|
||||||
|
@ -106,18 +106,6 @@ ulong monitor_flash_len;
|
|||||||
************************************************************************
|
************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* The Malloc area is immediately below the monitor copy in DRAM
|
|
||||||
*/
|
|
||||||
static void mem_malloc_init(ulong start, ulong size)
|
|
||||||
{
|
|
||||||
mem_malloc_start = start;
|
|
||||||
mem_malloc_end = start + size;
|
|
||||||
mem_malloc_brk = start;
|
|
||||||
|
|
||||||
memset ((void *)mem_malloc_start, 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* All attempts to come up with a "common" initialization sequence
|
* All attempts to come up with a "common" initialization sequence
|
||||||
* that works for all boards and architectures failed: some of the
|
* that works for all boards and architectures failed: some of the
|
||||||
@ -494,7 +482,7 @@ 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 */
|
/* The Malloc area is immediately below the monitor copy in DRAM */
|
||||||
mem_malloc_init (CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
|
mem_malloc_init (CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
|
||||||
TOTAL_MALLOC_LEN, TOTAL_MALLOC_LEN);
|
TOTAL_MALLOC_LEN, TOTAL_MALLOC_LEN);
|
||||||
malloc_bin_reloc ();
|
malloc_bin_reloc ();
|
||||||
|
@ -46,20 +46,6 @@ extern int eth_init (bd_t * bis);
|
|||||||
extern int getenv_IPaddr (char *);
|
extern int getenv_IPaddr (char *);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* 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
|
|
||||||
*/
|
|
||||||
static void mem_malloc_init(ulong start, ulong size)
|
|
||||||
{
|
|
||||||
mem_malloc_start = start;
|
|
||||||
mem_malloc_end = start + size;
|
|
||||||
mem_malloc_brk = start;
|
|
||||||
|
|
||||||
memset ((void *)mem_malloc_start, 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* All attempts to come up with a "common" initialization sequence
|
* All attempts to come up with a "common" initialization sequence
|
||||||
* that works for all boards and architectures failed: some of the
|
* that works for all boards and architectures failed: some of the
|
||||||
@ -104,7 +90,11 @@ void board_init (void)
|
|||||||
bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
|
bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
|
||||||
gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */
|
gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */
|
||||||
|
|
||||||
/* Initialise malloc() area */
|
/*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
mem_malloc_init (CONFIG_SYS_MALLOC_BASE, CONFIG_SYS_MALLOC_LEN);
|
mem_malloc_init (CONFIG_SYS_MALLOC_BASE, CONFIG_SYS_MALLOC_LEN);
|
||||||
|
|
||||||
for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
|
for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
|
||||||
|
@ -74,18 +74,6 @@ int __board_early_init_f(void)
|
|||||||
}
|
}
|
||||||
int board_early_init_f(void) __attribute__((weak, alias("__board_early_init_f")));
|
int board_early_init_f(void) __attribute__((weak, alias("__board_early_init_f")));
|
||||||
|
|
||||||
/*
|
|
||||||
* The Malloc area is immediately below the monitor copy in DRAM
|
|
||||||
*/
|
|
||||||
static void mem_malloc_init(ulong start, ulong size)
|
|
||||||
{
|
|
||||||
mem_malloc_start = start;
|
|
||||||
mem_malloc_end = start + size;
|
|
||||||
mem_malloc_brk = start;
|
|
||||||
|
|
||||||
memset ((void *)mem_malloc_start, 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int init_func_ram (void)
|
static int init_func_ram (void)
|
||||||
{
|
{
|
||||||
@ -347,7 +335,7 @@ void board_init_r (gd_t *id, ulong dest_addr)
|
|||||||
|
|
||||||
bd = gd->bd;
|
bd = gd->bd;
|
||||||
|
|
||||||
/* initialize malloc() area */
|
/* The Malloc area is immediately below the monitor copy in DRAM */
|
||||||
mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
|
mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off -
|
||||||
TOTAL_MALLOC_LEN, TOTAL_MALLOC_LEN);
|
TOTAL_MALLOC_LEN, TOTAL_MALLOC_LEN);
|
||||||
malloc_bin_reloc();
|
malloc_bin_reloc();
|
||||||
|
@ -52,18 +52,6 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||||||
extern void malloc_bin_reloc (void);
|
extern void malloc_bin_reloc (void);
|
||||||
typedef int (init_fnc_t) (void);
|
typedef int (init_fnc_t) (void);
|
||||||
|
|
||||||
/*
|
|
||||||
* The Malloc area is immediately below the monitor copy in RAM
|
|
||||||
*/
|
|
||||||
static void mem_malloc_init(ulong start, ulong size)
|
|
||||||
{
|
|
||||||
mem_malloc_start = start;
|
|
||||||
mem_malloc_end = start + size;
|
|
||||||
mem_malloc_brk = start;
|
|
||||||
|
|
||||||
memset ((void *)mem_malloc_start, 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* Initialization sequence *
|
* Initialization sequence *
|
||||||
@ -124,6 +112,8 @@ void board_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
WATCHDOG_RESET ();
|
WATCHDOG_RESET ();
|
||||||
|
|
||||||
|
/* The Malloc area is immediately below the monitor copy in RAM */
|
||||||
mem_malloc_init(CONFIG_SYS_MALLOC_BASE, CONFIG_SYS_MALLOC_LEN);
|
mem_malloc_init(CONFIG_SYS_MALLOC_BASE, CONFIG_SYS_MALLOC_LEN);
|
||||||
malloc_bin_reloc();
|
malloc_bin_reloc();
|
||||||
|
|
||||||
|
@ -55,18 +55,6 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||||||
extern void malloc_bin_reloc (void);
|
extern void malloc_bin_reloc (void);
|
||||||
typedef int (init_fnc_t) (void);
|
typedef int (init_fnc_t) (void);
|
||||||
|
|
||||||
/*
|
|
||||||
* The Malloc area is immediately below the monitor copy in RAM
|
|
||||||
*/
|
|
||||||
static void mem_malloc_init (void)
|
|
||||||
{
|
|
||||||
mem_malloc_start = start;
|
|
||||||
mem_malloc_end = start + size;
|
|
||||||
mem_malloc_brk = start
|
|
||||||
|
|
||||||
memset((void *)mem_malloc_start, 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* Initialization sequence *
|
* Initialization sequence *
|
||||||
@ -130,6 +118,8 @@ void board_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
WATCHDOG_RESET ();
|
WATCHDOG_RESET ();
|
||||||
|
|
||||||
|
/* The Malloc area is immediately below the monitor copy in RAM */
|
||||||
mem_malloc_init(CONFIG_SYS_MALLOC_BASE, CONFIG_SYS_MALLOC_LEN);
|
mem_malloc_init(CONFIG_SYS_MALLOC_BASE, CONFIG_SYS_MALLOC_LEN);
|
||||||
malloc_bin_reloc();
|
malloc_bin_reloc();
|
||||||
|
|
||||||
|
@ -141,18 +141,6 @@ ulong monitor_flash_len;
|
|||||||
************************************************************************
|
************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* The Malloc area is immediately below the monitor copy in DRAM
|
|
||||||
*/
|
|
||||||
static void mem_malloc_init(ulong start, ulong size)
|
|
||||||
{
|
|
||||||
mem_malloc_start = start;
|
|
||||||
mem_malloc_end = start + size;
|
|
||||||
mem_malloc_brk = start;
|
|
||||||
|
|
||||||
memset ((void *)mem_malloc_start, 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* All attempts to come up with a "common" initialization sequence
|
* All attempts to come up with a "common" initialization sequence
|
||||||
* that works for all boards and architectures failed: some of the
|
* that works for all boards and architectures failed: some of the
|
||||||
@ -657,6 +645,7 @@ void board_init_r (gd_t *id, ulong dest_addr)
|
|||||||
|
|
||||||
gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */
|
gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */
|
||||||
|
|
||||||
|
/* The Malloc area is immediately below the monitor copy in DRAM */
|
||||||
#if defined(CONFIG_RELOC_FIXUP_WORKS)
|
#if defined(CONFIG_RELOC_FIXUP_WORKS)
|
||||||
gd->reloc_off = 0;
|
gd->reloc_off = 0;
|
||||||
malloc_start = dest_addr - TOTAL_MALLOC_LEN;
|
malloc_start = dest_addr - TOTAL_MALLOC_LEN;
|
||||||
@ -758,7 +747,6 @@ void board_init_r (gd_t *id, ulong dest_addr)
|
|||||||
|
|
||||||
asm ("sync ; isync");
|
asm ("sync ; isync");
|
||||||
|
|
||||||
/* initialize malloc() area */
|
|
||||||
mem_malloc_init (malloc_start, TOTAL_MALLOC_LEN);
|
mem_malloc_init (malloc_start, TOTAL_MALLOC_LEN);
|
||||||
malloc_bin_reloc ();
|
malloc_bin_reloc ();
|
||||||
|
|
||||||
|
@ -38,15 +38,6 @@ const char version_string[] = U_BOOT_VERSION" ("U_BOOT_DATE" - "U_BOOT_TIME")";
|
|||||||
|
|
||||||
unsigned long monitor_flash_len = CONFIG_SYS_MONITOR_LEN;
|
unsigned long monitor_flash_len = CONFIG_SYS_MONITOR_LEN;
|
||||||
|
|
||||||
static void mem_malloc_init(ulong start, ulong size)
|
|
||||||
{
|
|
||||||
mem_malloc_start = start;
|
|
||||||
mem_malloc_end = start + size;
|
|
||||||
mem_malloc_brk = start;
|
|
||||||
|
|
||||||
memset((void *)mem_malloc_start, 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int sh_flash_init(void)
|
static int sh_flash_init(void)
|
||||||
{
|
{
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
@ -74,25 +74,6 @@ static char *failed = "*** failed ***\n";
|
|||||||
|
|
||||||
ulong monitor_flash_len;
|
ulong monitor_flash_len;
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* Utilities *
|
|
||||||
************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The Malloc area is immediately below the monitor copy in RAM
|
|
||||||
*/
|
|
||||||
static void mem_malloc_init(ulong start, ulong size)
|
|
||||||
{
|
|
||||||
mem_malloc_start = start;
|
|
||||||
mem_malloc_end = start + size;
|
|
||||||
mem_malloc_brk = start
|
|
||||||
|
|
||||||
memset((void *)mem_malloc_start, 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************/
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
* Init Utilities *
|
* Init Utilities *
|
||||||
************************************************************************
|
************************************************************************
|
||||||
@ -313,7 +294,7 @@ void board_init_f(ulong bootflag)
|
|||||||
*/
|
*/
|
||||||
interrupt_init();
|
interrupt_init();
|
||||||
|
|
||||||
/* initialize malloc() area */
|
/* The Malloc area is immediately below the monitor copy in RAM */
|
||||||
mem_malloc_init(CONFIG_SYS_MALLOC_BASE,
|
mem_malloc_init(CONFIG_SYS_MALLOC_BASE,
|
||||||
CONFIG_SYS_MALLOC_END - CONFIG_SYS_MALLOC_BASE);
|
CONFIG_SYS_MALLOC_END - CONFIG_SYS_MALLOC_BASE);
|
||||||
malloc_bin_reloc();
|
malloc_bin_reloc();
|
||||||
|
Loading…
Reference in New Issue
Block a user