Skip to content
Snippets Groups Projects
Forked from KED Software Projects / Miscellaneous / KED U-Boot Fork
Source project has a limited visibility.
  • Simon Glass's avatar
    74d01867
    Introduce board_init_f_mem() to handle early memory layout · 74d01867
    Simon Glass authored
    
    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: default avatarSimon Glass <sjg@chromium.org>
    74d01867
    History
    Introduce board_init_f_mem() to handle early memory layout
    Simon Glass authored
    
    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: default avatarSimon Glass <sjg@chromium.org>