Commit 448217d4b2e11b11ae5addd1d1f752ce194d6af0
Committed by
Albert ARIBAUD
1 parent
3ec81d758c
Exists in
master
and in
54 other branches
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>
Showing 13 changed files with 65 additions and 40 deletions Side-by-side Diff
- arch/arm/cpu/arm1136/start.S
- arch/arm/cpu/arm1176/start.S
- arch/arm/cpu/arm720t/start.S
- arch/arm/cpu/arm920t/start.S
- arch/arm/cpu/arm925t/start.S
- arch/arm/cpu/arm946es/start.S
- arch/arm/cpu/arm_intcm/start.S
- arch/arm/cpu/armv7/start.S
- arch/arm/cpu/ixp/start.S
- arch/arm/cpu/lh7a40x/start.S
- arch/arm/cpu/pxa/start.S
- arch/arm/cpu/s3c44b0/start.S
- arch/arm/cpu/sa1100/start.S
arch/arm/cpu/arm1136/start.S
... | ... | @@ -251,10 +251,12 @@ |
251 | 251 | add r1, r1, r4 |
252 | 252 | mov r2, #0x00000000 /* clear */ |
253 | 253 | |
254 | -clbss_l:str r2, [r0] /* clear loop... */ | |
254 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
255 | + bhs clbss_e /* if reached end of bss, exit */ | |
256 | + str r2, [r0] | |
255 | 257 | add r0, r0, #4 |
256 | - cmp r0, r1 | |
257 | - bne clbss_l | |
258 | + b clbss_l | |
259 | +clbss_e: | |
258 | 260 | #endif /* #ifndef CONFIG_SPL_BUILD */ |
259 | 261 | |
260 | 262 | /* |
arch/arm/cpu/arm1176/start.S
... | ... | @@ -351,11 +351,12 @@ |
351 | 351 | add r1, r1, r4 |
352 | 352 | mov r2, #0x00000000 /* clear */ |
353 | 353 | |
354 | -clbss_l:str r2, [r0] /* clear loop... */ | |
354 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
355 | + bhs clbss_e /* if reached end of bss, exit */ | |
356 | + str r2, [r0] | |
355 | 357 | add r0, r0, #4 |
356 | - cmp r0, r1 | |
357 | - bne clbss_l | |
358 | - | |
358 | + b clbss_l | |
359 | +clbss_e: | |
359 | 360 | #ifndef CONFIG_NAND_SPL |
360 | 361 | bl coloured_LED_init |
361 | 362 | bl red_led_on |
arch/arm/cpu/arm720t/start.S
... | ... | @@ -228,10 +228,12 @@ |
228 | 228 | add r1, r1, r4 |
229 | 229 | mov r2, #0x00000000 /* clear */ |
230 | 230 | |
231 | -clbss_l:str r2, [r0] /* clear loop... */ | |
231 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
232 | + bhs clbss_e /* if reached end of bss, exit */ | |
233 | + str r2, [r0] | |
232 | 234 | add r0, r0, #4 |
233 | - cmp r0, r1 | |
234 | - bne clbss_l | |
235 | + b clbss_l | |
236 | +clbss_e: | |
235 | 237 | |
236 | 238 | bl coloured_LED_init |
237 | 239 | bl red_led_on |
arch/arm/cpu/arm920t/start.S
... | ... | @@ -271,10 +271,12 @@ |
271 | 271 | add r1, r1, r4 |
272 | 272 | mov r2, #0x00000000 /* clear */ |
273 | 273 | |
274 | -clbss_l:str r2, [r0] /* clear loop... */ | |
274 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
275 | + bhs clbss_e /* if reached end of bss, exit */ | |
276 | + str r2, [r0] | |
275 | 277 | add r0, r0, #4 |
276 | - cmp r0, r1 | |
277 | - bne clbss_l | |
278 | + b clbss_l | |
279 | +clbss_e: | |
278 | 280 | |
279 | 281 | bl coloured_LED_init |
280 | 282 | bl red_led_on |
arch/arm/cpu/arm925t/start.S
... | ... | @@ -265,10 +265,12 @@ |
265 | 265 | add r1, r1, r4 |
266 | 266 | mov r2, #0x00000000 /* clear */ |
267 | 267 | |
268 | -clbss_l:str r2, [r0] /* clear loop... */ | |
268 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
269 | + bhs clbss_e /* if reached end of bss, exit */ | |
270 | + str r2, [r0] | |
269 | 271 | add r0, r0, #4 |
270 | - cmp r0, r1 | |
271 | - bne clbss_l | |
272 | + b clbss_l | |
273 | +clbss_e: | |
272 | 274 | |
273 | 275 | bl coloured_LED_init |
274 | 276 | bl red_led_on |
arch/arm/cpu/arm946es/start.S
... | ... | @@ -236,10 +236,12 @@ |
236 | 236 | add r1, r1, r4 |
237 | 237 | mov r2, #0x00000000 /* clear */ |
238 | 238 | |
239 | -clbss_l:str r2, [r0] /* clear loop... */ | |
239 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
240 | + bhs clbss_e /* if reached end of bss, exit */ | |
241 | + str r2, [r0] | |
240 | 242 | add r0, r0, #4 |
241 | - cmp r0, r1 | |
242 | - blo clbss_l | |
243 | + b clbss_l | |
244 | +clbss_e: | |
243 | 245 | #endif |
244 | 246 | |
245 | 247 | /* |
arch/arm/cpu/arm_intcm/start.S
... | ... | @@ -232,10 +232,12 @@ |
232 | 232 | add r1, r1, r4 |
233 | 233 | mov r2, #0x00000000 /* clear */ |
234 | 234 | |
235 | -clbss_l:str r2, [r0] /* clear loop... */ | |
235 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
236 | + bhs clbss_e /* if reached end of bss, exit */ | |
237 | + str r2, [r0] | |
236 | 238 | add r0, r0, #4 |
237 | - cmp r0, r1 | |
238 | - bne clbss_l | |
239 | + b clbss_l | |
240 | +clbss_e: | |
239 | 241 | |
240 | 242 | bl coloured_LED_init |
241 | 243 | bl red_led_on |
arch/arm/cpu/armv7/start.S
... | ... | @@ -259,10 +259,12 @@ |
259 | 259 | #endif |
260 | 260 | mov r2, #0x00000000 /* clear */ |
261 | 261 | |
262 | -clbss_l:str r2, [r0] /* clear loop... */ | |
262 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
263 | + bhs clbss_e /* if reached end of bss, exit */ | |
264 | + str r2, [r0] | |
263 | 265 | add r0, r0, #4 |
264 | - cmp r0, r1 | |
265 | - bne clbss_l | |
266 | + b clbss_l | |
267 | +clbss_e: | |
266 | 268 | |
267 | 269 | /* |
268 | 270 | * We are done. Do not return, instead branch to second part of board |
arch/arm/cpu/ixp/start.S
... | ... | @@ -334,10 +334,12 @@ |
334 | 334 | add r1, r1, r4 |
335 | 335 | mov r2, #0x00000000 /* clear */ |
336 | 336 | |
337 | -clbss_l:str r2, [r0] /* clear loop... */ | |
337 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
338 | + bhs clbss_e /* if reached end of bss, exit */ | |
339 | + str r2, [r0] | |
338 | 340 | add r0, r0, #4 |
339 | - cmp r0, r1 | |
340 | - bne clbss_l | |
341 | + b clbss_l | |
342 | +clbss_e: | |
341 | 343 | |
342 | 344 | bl coloured_LED_init |
343 | 345 | bl red_led_on |
arch/arm/cpu/lh7a40x/start.S
... | ... | @@ -245,10 +245,12 @@ |
245 | 245 | add r1, r1, r4 |
246 | 246 | mov r2, #0x00000000 /* clear */ |
247 | 247 | |
248 | -clbss_l:str r2, [r0] /* clear loop... */ | |
248 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
249 | + bhs clbss_e /* if reached end of bss, exit */ | |
250 | + str r2, [r0] | |
249 | 251 | add r0, r0, #4 |
250 | - cmp r0, r1 | |
251 | - bne clbss_l | |
252 | + b clbss_l | |
253 | +clbss_e: | |
252 | 254 | #endif |
253 | 255 | |
254 | 256 | /* |
arch/arm/cpu/pxa/start.S
... | ... | @@ -258,10 +258,12 @@ |
258 | 258 | add r1, r1, r4 |
259 | 259 | mov r2, #0x00000000 /* clear */ |
260 | 260 | |
261 | -clbss_l:str r2, [r0] /* clear loop... */ | |
261 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
262 | + bhs clbss_e /* if reached end of bss, exit */ | |
263 | + str r2, [r0] | |
262 | 264 | add r0, r0, #4 |
263 | - cmp r0, r1 | |
264 | - bne clbss_l | |
265 | + b clbss_l | |
266 | +clbss_e: | |
265 | 267 | #endif /* #ifndef CONFIG_SPL_BUILD */ |
266 | 268 | |
267 | 269 | /* |
arch/arm/cpu/s3c44b0/start.S
... | ... | @@ -217,10 +217,12 @@ |
217 | 217 | add r1, r1, r4 |
218 | 218 | mov r2, #0x00000000 /* clear */ |
219 | 219 | |
220 | -clbss_l:str r2, [r0] /* clear loop... */ | |
220 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
221 | + bhs clbss_e /* if reached end of bss, exit */ | |
222 | + str r2, [r0] | |
221 | 223 | add r0, r0, #4 |
222 | - cmp r0, r1 | |
223 | - bne clbss_l | |
224 | + b clbss_l | |
225 | +clbss_e: | |
224 | 226 | |
225 | 227 | bl coloured_LED_init |
226 | 228 | bl red_led_on |
arch/arm/cpu/sa1100/start.S
... | ... | @@ -221,10 +221,12 @@ |
221 | 221 | add r1, r1, r4 |
222 | 222 | mov r2, #0x00000000 /* clear */ |
223 | 223 | |
224 | -clbss_l:str r2, [r0] /* clear loop... */ | |
224 | +clbss_l:cmp r0, r1 /* clear loop... */ | |
225 | + bhs clbss_e /* if reached end of bss, exit */ | |
226 | + str r2, [r0] | |
225 | 227 | add r0, r0, #4 |
226 | - cmp r0, r1 | |
227 | - bne clbss_l | |
228 | + b clbss_l | |
229 | +clbss_e: | |
228 | 230 | #endif |
229 | 231 | |
230 | 232 | /* |