mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 08:42:12 +02:00
spl: make SPL and normal u-boot stage use independent SYS_MALLOC_F_LEN
Some platforms have very limited SRAM to run SPL code, so there may not be the same amount space for a malloc pool before relocation in the SPL stage as the normal U-Boot stage. Make SPL and (the full) U-Boot stage use independent SYS_MALLOC_F_LEN, so the size of pre-relocation malloc pool can be configured memory space independently. Signed-off-by: Andy Yan <andy.yan@rock-chips.com> Reviewed-by: Tom Rini <trini@konsulko.com> Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> [fixed up commit-message:] Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
This commit is contained in:
committed by
Philipp Tomsich
parent
a1903c18db
commit
f1896c45cb
@@ -1254,7 +1254,7 @@ Void_t* mALLOc(bytes) size_t bytes;
|
||||
|
||||
INTERNAL_SIZE_T nb;
|
||||
|
||||
#ifdef CONFIG_SYS_MALLOC_F_LEN
|
||||
#if CONFIG_VAL(SYS_MALLOC_F_LEN)
|
||||
if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT))
|
||||
return malloc_simple(bytes);
|
||||
#endif
|
||||
@@ -1522,7 +1522,7 @@ void fREe(mem) Void_t* mem;
|
||||
mchunkptr fwd; /* misc temp for linking */
|
||||
int islr; /* track whether merging with last_remainder */
|
||||
|
||||
#ifdef CONFIG_SYS_MALLOC_F_LEN
|
||||
#if CONFIG_VAL(SYS_MALLOC_F_LEN)
|
||||
/* free() is a no-op - all the memory will be freed on relocation */
|
||||
if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT))
|
||||
return;
|
||||
@@ -1679,7 +1679,7 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes;
|
||||
/* realloc of null is supposed to be same as malloc */
|
||||
if (oldmem == NULL) return mALLOc(bytes);
|
||||
|
||||
#ifdef CONFIG_SYS_MALLOC_F_LEN
|
||||
#if CONFIG_VAL(SYS_MALLOC_F_LEN)
|
||||
if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) {
|
||||
/* This is harder to support and should not be needed */
|
||||
panic("pre-reloc realloc() is not supported");
|
||||
@@ -2074,7 +2074,7 @@ Void_t* cALLOc(n, elem_size) size_t n; size_t elem_size;
|
||||
return NULL;
|
||||
else
|
||||
{
|
||||
#ifdef CONFIG_SYS_MALLOC_F_LEN
|
||||
#if CONFIG_VAL(SYS_MALLOC_F_LEN)
|
||||
if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) {
|
||||
MALLOC_ZERO(mem, sz);
|
||||
return mem;
|
||||
@@ -2375,9 +2375,9 @@ int mALLOPt(param_number, value) int param_number; int value;
|
||||
|
||||
int initf_malloc(void)
|
||||
{
|
||||
#ifdef CONFIG_SYS_MALLOC_F_LEN
|
||||
#if CONFIG_VAL(SYS_MALLOC_F_LEN)
|
||||
assert(gd->malloc_base); /* Set up by crt0.S */
|
||||
gd->malloc_limit = CONFIG_SYS_MALLOC_F_LEN;
|
||||
gd->malloc_limit = CONFIG_VAL(SYS_MALLOC_F_LEN);
|
||||
gd->malloc_ptr = 0;
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user