]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
common: Tidy up how malloc() is inited
authorSimon Glass <sjg@chromium.org>
Mon, 21 Oct 2024 08:19:26 +0000 (10:19 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 25 Oct 2024 20:22:24 +0000 (14:22 -0600)
The call to malloc() is a bit strange. The naming of the arguments
suggests that an address is passed, but in fact it is a pointer, at
least in the board_init_r() function and SPL equivalent.

Update it to work as described. Add a function comment as well.

Note that this does adjustment does not extend into the malloc()
implementation itself, apart from changing mem_malloc_init(), since
there are lots of casts and pointers and integers are used
interchangeably.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
common/board_r.c
common/dlmalloc.c
common/spl/spl.c
include/malloc.h

index e5f33f40643b771121edf819dd4f617a98d08ad9..8a19817fa39b56a27cc842c765436d247a703729 100644 (file)
@@ -204,8 +204,7 @@ static int initr_malloc(void)
         */
        start = gd->relocaddr - TOTAL_MALLOC_LEN;
        gd_set_malloc_start(start);
-       mem_malloc_init((ulong)map_sysmem(start, TOTAL_MALLOC_LEN),
-                       TOTAL_MALLOC_LEN);
+       mem_malloc_init(start, TOTAL_MALLOC_LEN);
        return 0;
 }
 
index 1ac7ce3f43c64ef8fcbe73300d4c1e11ff026a85..cc4d3a0a0281ba85c82521df364d0a84647ae5d0 100644 (file)
@@ -16,6 +16,8 @@
 #include <asm/global_data.h>
 
 #include <malloc.h>
+#include <mapmem.h>
+#include <string.h>
 #include <asm/io.h>
 #include <valgrind/memcheck.h>
 
@@ -598,9 +600,9 @@ void *sbrk(ptrdiff_t increment)
 
 void mem_malloc_init(ulong start, ulong size)
 {
-       mem_malloc_start = start;
-       mem_malloc_end = start + size;
-       mem_malloc_brk = start;
+       mem_malloc_start = (ulong)map_sysmem(start, size);
+       mem_malloc_end = mem_malloc_start + size;
+       mem_malloc_brk = mem_malloc_start;
 
 #ifdef CONFIG_SYS_MALLOC_DEFAULT_TO_INIT
        malloc_init();
index 94657d00591f4a2725a8270aed6e62a50f7e943e..1ceb63daf3183809fc98f23d967545190ca00616 100644 (file)
@@ -678,9 +678,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
        spl_set_bd();
 
        if (IS_ENABLED(CONFIG_SPL_SYS_MALLOC)) {
-               mem_malloc_init((ulong)map_sysmem(SPL_SYS_MALLOC_START,
-                                                 SPL_SYS_MALLOC_SIZE),
-                               SPL_SYS_MALLOC_SIZE);
+               mem_malloc_init(SPL_SYS_MALLOC_START, SPL_SYS_MALLOC_SIZE);
                gd->flags |= GD_FLG_FULL_MALLOC_INIT;
        }
        if (!(gd->flags & GD_FLG_SPL_INIT)) {
index 07d3e90a855cac3c4fd56b468d674a18df12a6db..9e0be482416efc970dd52874a9de114493325f18 100644 (file)
@@ -981,6 +981,14 @@ extern ulong mem_malloc_start;
 extern ulong mem_malloc_end;
 extern ulong mem_malloc_brk;
 
+/**
+ * mem_malloc_init() - Set up the malloc() pool
+ *
+ * Sets the region of memory to be used for all future calls to malloc(), etc.
+ *
+ * @start: Start address
+ * @size: Size in bytes
+ */
 void mem_malloc_init(ulong start, ulong size);
 
 #ifdef __cplusplus