[U-Boot] [PATCH v5] arm: Fix clear bss loop for zero length bss

Albert ARIBAUD albert.u.boot at aribaud.net
Wed Nov 30 21:13:13 CET 2011


Hi Christian,

Le 29/11/2011 11:58, Christian Riesch a écrit :
> This patch fixes the clear bss loop for bss sections that have
> zero length, i.e., where __bss_start == __bss_end__.

Just out of curiosity, did you actually hit a scenario when you had a 
really empty BSS? Not that I intend to reject this patch because of 
this, mind.

> Signed-off-by: Christian Riesch<christian.riesch at omicron.at>
> Cc: Albert Aribaud<albert.u.boot at aribaud.net>
> ---
> Hi,
> this is v5 of a patch out of my recent patchset
>
> [PATCH v3 00/15] Add an SPL to boot the da850evm from SPI
> http://lists.denx.de/pipermail/u-boot/2011-November/111182.html
>
> Changes for v5:
> - correct subject line
>
> Changes for v4:
> - split the patchset since it is getting quite big
>
> Regards, Christian
>
>   arch/arm/cpu/arm926ejs/start.S |    8 +++++---
>   1 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S
> index 8b5355b..772793c 100644
> --- a/arch/arm/cpu/arm926ejs/start.S
> +++ b/arch/arm/cpu/arm926ejs/start.S
> @@ -299,10 +299,12 @@ clear_bss:
>   #endif
>   	mov	r2, #0x00000000		/* clear			    */
>
> -clbss_l:str	r2, [r0]		/* clear loop...		    */
> +clbss_l:cmp	r0, r1			/* clear loop...		    */
> +	beq	clbss_e

For safety, you had better use a bge here, in case r1-r0 is not a 
multiple of 4.

> +	str	r2, [r0]
>   	add	r0, r0, #4
> -	cmp	r0, r1
> -	bne	clbss_l
> +	b	clbss_l
> +clbss_e:
>
>   #ifndef CONFIG_SPL_BUILD
>   	bl coloured_LED_init

Amicalement,
-- 
Albert.


More information about the U-Boot mailing list