[PATCH v2 2/2] microblaze: start.S: Use board_init_f_alloc/init in early init
Michal Simek
monstr at monstr.eu
Thu Sep 24 16:31:30 CEST 2020
On 24. 09. 20 10:54, 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
>
> Cc: Michal Simek <monstr at monstr.eu>
> Signed-off-by: Ovidiu Panait <ovidiu.panait at windriver.com>
> ---
> v2:
> - do not set stack high protection twice
> - remove CONFIG_SYS_MALLOC_F_LEN from CONFIG_SPL_STACK_ADDR computation
>
> arch/microblaze/cpu/start.S | 46 +++++++++++++---------------
> include/configs/microblaze-generic.h | 3 +-
> 2 files changed, 23 insertions(+), 26 deletions(-)
>
> diff --git a/arch/microblaze/cpu/start.S b/arch/microblaze/cpu/start.S
> index b9c6ccc912..9479737aa2 100644
> --- a/arch/microblaze/cpu/start.S
> +++ b/arch/microblaze/cpu/start.S
> @@ -17,25 +17,39 @@ _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 */
>
> + /* 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
> +
> + /* board_init_f_alloc_reserve returns a pointer to the allocated area
> + * in r3. Set the new stack pointer below this area. */
> + add r1, r0, r3
> + mts rshr, r1
> + addi r1, r1, -4
> +
> + /* Call board_init_f_init_reserve with the address returned by
> + * board_init_f_alloc_reserve as parameter. */
> + add r5, r0, r3
> + bralid r15, board_init_f_init_reserve
> + nop
> +
> +#if !defined(CONFIG_SPL_BUILD)
> /* Setup vectors with pre-relocation symbols */
> or r5, r0, r0
> bralid r15, __setup_exceptions
> nop
> -#endif /* CONFIG_SPL_BUILD */
> +#endif
>
> /* Flush cache before enable cache */
> addik r5, r0, 0
> @@ -48,7 +62,6 @@ _start:
> ori r12, r12, 0x1a0
> mts rmsr, r12
>
> - /* TODO: Redo this code to call board_init_f_*() */
> clear_bss:
> /* clear BSS segments */
> addi r5, r0, __bss_start
> @@ -67,27 +80,12 @@ clear_bss:
> #endif
> #ifndef CONFIG_SPL_BUILD
> or r5, r0, r0 /* flags - empty */
> - addi r31, r0, _gd
> -#if CONFIG_VAL(SYS_MALLOC_F_LEN)
> - addi r6, r0, CONFIG_SYS_INIT_SP_OFFSET
> - swi r6, r31, GD_MALLOC_BASE
> -#endif
> brai board_init_f
> #else
> - addi r31, r0, _gd
> -#if CONFIG_VAL(SYS_MALLOC_F_LEN)
> - addi r6, r0, CONFIG_SPL_STACK_ADDR
> - swi r6, r31, GD_MALLOC_BASE
> -#endif
> brai board_init_r
> #endif
> 1: bri 1b
>
> - .section .bss
> -.align 4
> -_gd:
> - .space GENERATED_GBL_DATA_SIZE
> -
> #ifndef CONFIG_SPL_BUILD
> .text
> .ent __setup_exceptions
> diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h
> index 8ca0e83c78..dfc2cd97d3 100644
> --- a/include/configs/microblaze-generic.h
> +++ b/include/configs/microblaze-generic.h
> @@ -167,8 +167,7 @@
> #define CONFIG_SYS_INIT_RAM_SIZE 0x100000
>
> # define CONFIG_SPL_STACK_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
> - CONFIG_SYS_INIT_RAM_SIZE - \
> - CONFIG_SYS_MALLOC_F_LEN)
> + CONFIG_SYS_INIT_RAM_SIZE)
>
> /* Just for sure that there is a space for stack */
> #define CONFIG_SPL_STACK_SIZE 0x100
>
Applied.
M
--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP/Versal SoCs
More information about the U-Boot
mailing list