[U-Boot] [PATCH v2 01/19] Introduce board_init_f_mem() to handle early memory layout

Simon Glass sjg at chromium.org
Wed Feb 11 20:35:53 CET 2015


On 7 February 2015 at 11:51, Simon Glass <sjg at chromium.org> wrote:
> At present on some architectures we set up the following before calling
> board_init_f():
>
>    - global_data
>    - stack
>    - early malloc memory
>
> Adding the code to support early malloc and global data setup to every
> arch's assembler start-up is a pain. Also this code is not actually
> architecture-specific. We can use common code for all architectures and
> with a bit of care we can write this code in C.
>
> Add a new function to deal with this. It should be called after memory
> is available, with a pointer to the top of the area that should be used
> before relocation. The function will set things up and return the lowest
> memory address that it allocated/used. That can then be set as the top
> of the stack.
>
> Note that on some archs this function will use the stack, so the stack
> pointer should be set to same value as is pased to board_init_f_mem().
> A margin of 128 bytes will be left for this stack, so that it is not
> overwritten. This means that 64 bytes is wasted by this early call.
> This is not strictly necessary on several more modern archs, so we could
> remove this at the cost of some arch-dependent code.
>
> With this function there is no-longer any need for the assembler code to
> zero global_data or set up the early malloc pointers.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> Changes in v2:
> - Reduce reserved stack space for board_init_f_mem() to 64 bytes
>
>  common/board_f.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)

Applied to u-boot-dm.


More information about the U-Boot mailing list