[U-Boot] [PATCH 7/8] riscv: Fix clear bss loop in the start-up code
Bin Meng
bmeng.cn at gmail.com
Tue Oct 29 15:16:09 UTC 2019
Hi Rick,
On Fri, Oct 25, 2019 at 2:18 PM Andes <uboot at andestech.com> wrote:
>
> From: Rick Chen <rick at andestech.com>
>
> For RV64, it will use sd instruction to clear t0
> register, and the increament will be 8 bytes. So
> if the difference between__bss_strat and __bss_end
> was not 8 bytes aligned, the clear bss loop will
> overflow and acks like system hang.
>
> Signed-off-by: Rick Chen <rick at andestech.com>
> Cc: KC Lin <kclin at andestech.com>
> Cc: Alan Kao <alankao at andestech.com>
> ---
> arch/riscv/cpu/start.S | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/riscv/cpu/start.S b/arch/riscv/cpu/start.S
> index 0a2ce6d..ee6d471 100644
> --- a/arch/riscv/cpu/start.S
> +++ b/arch/riscv/cpu/start.S
> @@ -174,7 +174,7 @@ spl_clear_bss:
> spl_clear_bss_loop:
> SREG zero, 0(t0)
> addi t0, t0, REGBYTES
> - bne t0, t1, spl_clear_bss_loop
> + blt t0, t1, spl_clear_bss_loop
This leaves bss section not completely zeroed.
>
> spl_stack_gd_setup:
> jal spl_relocate_stack_gd
> @@ -324,7 +324,7 @@ clear_bss:
> clbss_l:
> SREG zero, 0(t0) /* clear loop... */
> addi t0, t0, REGBYTES
> - bne t0, t1, clbss_l
> + blt t0, t1, clbss_l
>
> relocate_secondary_harts:
> #ifdef CONFIG_SMP
> --
Regards,
Bin
More information about the U-Boot
mailing list