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>
This commit is contained in:
Zhong Hongbo 2012-07-07 03:24:33 +00:00 committed by Albert ARIBAUD
parent 3ec81d758c
commit 448217d4b2
13 changed files with 65 additions and 40 deletions

View File

@ -251,10 +251,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
#endif /* #ifndef CONFIG_SPL_BUILD */ #endif /* #ifndef CONFIG_SPL_BUILD */
/* /*

View File

@ -351,11 +351,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
#ifndef CONFIG_NAND_SPL #ifndef CONFIG_NAND_SPL
bl coloured_LED_init bl coloured_LED_init
bl red_led_on bl red_led_on

View File

@ -228,10 +228,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
bl coloured_LED_init bl coloured_LED_init
bl red_led_on bl red_led_on

View File

@ -271,10 +271,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
bl coloured_LED_init bl coloured_LED_init
bl red_led_on bl red_led_on

View File

@ -265,10 +265,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
bl coloured_LED_init bl coloured_LED_init
bl red_led_on bl red_led_on

View File

@ -236,10 +236,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
blo clbss_l clbss_e:
#endif #endif
/* /*

View File

@ -232,10 +232,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
bl coloured_LED_init bl coloured_LED_init
bl red_led_on bl red_led_on

View File

@ -259,10 +259,12 @@ clear_bss:
#endif #endif
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
/* /*
* We are done. Do not return, instead branch to second part of board * We are done. Do not return, instead branch to second part of board

View File

@ -334,10 +334,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
bl coloured_LED_init bl coloured_LED_init
bl red_led_on bl red_led_on

View File

@ -245,10 +245,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
#endif #endif
/* /*

View File

@ -258,10 +258,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
#endif /* #ifndef CONFIG_SPL_BUILD */ #endif /* #ifndef CONFIG_SPL_BUILD */
/* /*

View File

@ -217,10 +217,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
bl coloured_LED_init bl coloured_LED_init
bl red_led_on bl red_led_on

View File

@ -221,10 +221,12 @@ clear_bss:
add r1, r1, r4 add r1, r1, r4
mov r2, #0x00000000 /* clear */ 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 add r0, r0, #4
cmp r0, r1 b clbss_l
bne clbss_l clbss_e:
#endif #endif
/* /*