
Hi,
On 22-09-15 06:00, Simon Glass wrote:
Hi Hans,
On 13 September 2015 at 09:42, Hans de Goede hdegoede@redhat.com wrote:
common/dlmalloc.c is quite big, both in .text and .data usage, therefor on some boards the SPL is build to use only malloc_simple.c and not the dlmalloc.c code. This is done in various include/configs/foo.h with the following construct:
Was there a '#' at the start of this missing line?
Yep, I keep falling over git commit eating up any lines starting with a # when quoting code snippets in commit messages...
I will fix this and send a v2.
This commit introduces a SPL_MALLOC_SIMPLE Kconfig bool which allows selecting this functionality through Kconfig instead.
Signed-off-by: Hans de Goede hdegoede@redhat.com
Kconfig | 10 ++++++++++ common/malloc_simple.c | 3 ++- include/_exports.h | 3 ++- include/exports.h | 3 ++- include/malloc.h | 3 ++- 5 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/Kconfig b/Kconfig index 05a34f7..0ae4fab 100644 --- a/Kconfig +++ b/Kconfig @@ -114,6 +114,16 @@ config SPL help If you want to build SPL as well as the normal image, say Y.
+config SPL_MALLOC_SIMPLE
If you made it SPL_SYS_MALLOC_SIMPLE...
bool
depends on SPL
prompt "Only use malloc_simple functions in the spl"
help
Say Y here to only use the *_simple malloc functions from
malloc_simple.c, rather then using the versions from dlmalloc.c
this will make the SPL binary smaller at the cost of more heap
usage as the *_simple malloc functions do not re-use free-ed mem.
- config SPL_STACK_R depends on SPL bool "Enable SDRAM location for SPL stack"
diff --git a/common/malloc_simple.c b/common/malloc_simple.c index c745863..e9c1eaa 100644 --- a/common/malloc_simple.c +++ b/common/malloc_simple.c @@ -40,7 +40,8 @@ void *memalign_simple(size_t align, size_t bytes) return ptr; }
-#ifdef CONFIG_SYS_MALLOC_SIMPLE +#if (defined CONFIG_SPL_BUILD && defined CONFIG_SPL_MALLOC_SIMPLE) || \
- (defined CONFIG_SYS_MALLOC_SIMPLE)
then I think this could become:
#if CONFIG_IS_ENABLED(SYS_MALLOC_SIMPLE)
I think you're right, good one. I'll give this a spin and if it works include the change in V2.
void *calloc(size_t nmemb, size_t elem_size) { size_t size = nmemb * elem_size; diff --git a/include/_exports.h b/include/_exports.h index 74a882a..f811c5d 100644 --- a/include/_exports.h +++ b/include/_exports.h @@ -23,7 +23,8 @@ EXPORT_FUNC(dummy, void, free_hdlr, void) #endif EXPORT_FUNC(malloc, void *, malloc, size_t) -#ifndef CONFIG_SYS_MALLOC_SIMPLE +#if !(defined CONFIG_SPL_BUILD && defined CONFIG_SPL_MALLOC_SIMPLE) && \
- !(defined CONFIG_SYS_MALLOC_SIMPLE) EXPORT_FUNC(free, void, free, void *) #endif EXPORT_FUNC(udelay, void, udelay, unsigned long)
diff --git a/include/exports.h b/include/exports.h index a3e0469..8171b31 100644 --- a/include/exports.h +++ b/include/exports.h @@ -19,7 +19,8 @@ int printf(const char* fmt, ...); void install_hdlr(int, interrupt_handler_t, void*); void free_hdlr(int); void *malloc(size_t); -#ifndef CONFIG_SYS_MALLOC_SIMPLE +#if !(defined CONFIG_SPL_BUILD && defined CONFIG_SPL_MALLOC_SIMPLE) && \
- !(defined CONFIG_SYS_MALLOC_SIMPLE) void free(void*); #endif void __udelay(unsigned long);
diff --git a/include/malloc.h b/include/malloc.h index f4da9e6..e5592fc 100644 --- a/include/malloc.h +++ b/include/malloc.h @@ -872,7 +872,8 @@ extern Void_t* sbrk();
#else
-#ifdef CONFIG_SYS_MALLOC_SIMPLE +#if (defined CONFIG_SPL_BUILD && defined CONFIG_SPL_MALLOC_SIMPLE) || \
- (defined CONFIG_SYS_MALLOC_SIMPLE) #define malloc malloc_simple #define realloc realloc_simple #define memalign memalign_simple
-- 2.4.3
Regards, Simon
Regards,
Hans