
On 20. 09. 20 18:50, Ovidiu Panait wrote:
Implement early init by calling generic board_init_f_alloc_reserve and board_init_f_init_reserve functions:
- drop SYS_MALLOC_F_LEN related code, as allocation and gd->malloc_base assignment are taken care of by the generic functions
- drop _gd logic
Signed-off-by: Ovidiu Panait ovidiu.panait@windriver.com
arch/microblaze/cpu/start.S | 45 ++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 23 deletions(-)
diff --git a/arch/microblaze/cpu/start.S b/arch/microblaze/cpu/start.S index f3be014317..1f580b1112 100644 --- a/arch/microblaze/cpu/start.S +++ b/arch/microblaze/cpu/start.S @@ -17,25 +17,40 @@ _start:
addi r8, r0, __end mts rslr, r8
- /* TODO: Redo this code to call board_init_f_*() */
#if defined(CONFIG_SPL_BUILD) addi r1, r0, CONFIG_SPL_STACK_ADDR
- mts rshr, r1
- addi r1, r1, -4 /* Decrement SP to top of memory */
-#else -#if CONFIG_VAL(SYS_MALLOC_F_LEN)
- addi r1, r0, CONFIG_SYS_INIT_SP_OFFSET - CONFIG_VAL(SYS_MALLOC_F_LEN)
#else addi r1, r0, CONFIG_SYS_INIT_SP_OFFSET #endif
- mts rshr, r1 addi r1, r1, -4 /* Decrement SP to top of memory */
You are setting stack high protection in below code that's why no need to call it twice here but
- /* Call board_init_f_alloc_reserve with the current stack pointer as
* parameter. */
- add r5, r0, r1
- bralid r15, board_init_f_alloc_reserve
- nop
In SPL case this will decrease stack by SYS_MALLOC_F_LEN which is wrong.
This should be fine if you remove CONFIG_SYS_MALLOC_F_LEN from CONFIG_SPL_STACK_ADDR then behavior will remain the same as was before. (there is one more rounddown in board_init_f_alloc_reserve() but that should be fine.
215 # define CONFIG_SPL_STACK_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \ 216 CONFIG_SYS_INIT_RAM_SIZE - \ 217 CONFIG_SYS_MALLOC_F_LEN)
The rest of code looks good to me.
Thanks, Michal