[U-Boot] [PATCH v3 4/9] Add a simple malloc() implementation for pre-relocation

Simon Glass sjg at chromium.org
Sat Jul 26 17:23:30 CEST 2014


On 11 July 2014 05:23, Simon Glass <sjg at chromium.org> wrote:
> If we are to have driver model before relocation we need to support some
> way of calling memory allocation routines.
>
> The standard malloc() is pretty complicated:
>
> 1. It uses some BSS memory for its state, and BSS is not available before
> relocation
>
> 2. It supports algorithms for reducing memory fragmentation and improving
> performace of free(). Before relocation we could happily just not support
> free().
>
> 3. It includes about 4KB of code (Thumb 2) and 1KB of data. However since
> this has been loaded anyway this is not really a problem.
>
> The simplest way to support pre-relocation malloc() is to reserve an area
> of memory and allocate it in increasing blocks as needed. This
> implementation does this.
>
> To enable it, you need to define the size of the malloc() pool as described
> in the README. It will be located above the pre-relocation stack on
> supported architectures.
>
> Note that this implementation is only useful on machines which have some
> memory available before dram_init() is called - this includes those that
> do no DRAM init (like tegra) and those that do it in SPL (quite a few
> boards). Enabling driver model preior to relocation for the rest of the
> boards is left for a later exercise.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>

Applied to dm/master.


More information about the U-Boot mailing list