提交 448217d4 编写于 作者: Z Zhong Hongbo 提交者: Albert ARIBAUD

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: NZhong Hongbo <bocui107@gmail.com>
Acked-by: NAndreas Bießmann <andreas.devel@googlemail.com>
上级 3ec81d75
......@@ -251,10 +251,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:
#endif /* #ifndef CONFIG_SPL_BUILD */
/*
......
......@@ -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
......
......@@ -228,10 +228,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:
bl coloured_LED_init
bl red_led_on
......
......@@ -271,10 +271,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:
bl coloured_LED_init
bl red_led_on
......
......@@ -265,10 +265,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:
bl coloured_LED_init
bl red_led_on
......
......@@ -236,10 +236,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
blo clbss_l
b clbss_l
clbss_e:
#endif
/*
......
......@@ -232,10 +232,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:
bl coloured_LED_init
bl red_led_on
......
......@@ -259,10 +259,12 @@ clear_bss:
#endif
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:
/*
* We are done. Do not return, instead branch to second part of board
......
......@@ -334,10 +334,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:
bl coloured_LED_init
bl red_led_on
......
......@@ -245,10 +245,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:
#endif
/*
......
......@@ -258,10 +258,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:
#endif /* #ifndef CONFIG_SPL_BUILD */
/*
......
......@@ -217,10 +217,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:
bl coloured_LED_init
bl red_led_on
......
......@@ -221,10 +221,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:
#endif
/*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册