diff options
author | Zhong Hongbo <bocui107@gmail.com> | 2012-07-07 03:24:33 +0000 |
---|---|---|
committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2012-07-20 14:24:08 +0200 |
commit | 448217d4b2e11b11ae5addd1d1f752ce194d6af0 (patch) | |
tree | 0bac7b2fb11a99bf7d8c256a484188b2ca11e66c /arch/arm/cpu/arm1176/start.S | |
parent | 3ec81d758c09d6887a77a1b1259d044a2905bc8e (diff) |
arm: Fix to mistake clean the memory space
In currently, when __bss_start is equal to __bss_end__,
The bss loop will clear all the things in memory space.
But just only when __bss_end__ greater than __bss_start__,
we do the clear bss section operation.
Signed-off-by: Zhong Hongbo <bocui107@gmail.com>
Acked-by: Andreas Bießmann <andreas.devel@googlemail.com>
Diffstat (limited to 'arch/arm/cpu/arm1176/start.S')
-rw-r--r-- | arch/arm/cpu/arm1176/start.S | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/arm/cpu/arm1176/start.S b/arch/arm/cpu/arm1176/start.S index 848144a851..d61364109e 100644 --- a/arch/arm/cpu/arm1176/start.S +++ b/arch/arm/cpu/arm1176/start.S @@ -351,11 +351,12 @@ clear_bss: add r1, r1, r4 mov r2, #0x00000000 /* clear */ -clbss_l:str r2, [r0] /* clear loop... */ +clbss_l:cmp r0, r1 /* clear loop... */ + bhs clbss_e /* if reached end of bss, exit */ + str r2, [r0] add r0, r0, #4 - cmp r0, r1 - bne clbss_l - + b clbss_l +clbss_e: #ifndef CONFIG_NAND_SPL bl coloured_LED_init bl red_led_on |