Fix ppc4xx clear_bss() code

ppc4xx clear_bss() fails if BSS segment size is not
divisible by 4 without remainder. This patch provides
fix for this problem.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
master
Anatolij Gustschin 17 years ago committed by Stefan Roese
parent 85dc2a7f82
commit 42ed33ffe1
  1. 17
      cpu/ppc4xx/start.S

@ -1494,16 +1494,25 @@ clear_bss:
lwz r4,GOT(_end)
cmplw 0, r3, r4
beq 6f
beq 7f
li r0, 0
5:
andi. r5, r4, 3
beq 6f
sub r4, r4, r5
mtctr r5
mr r5, r4
5: stb r0, 0(r5)
addi r5, r5, 1
bdnz 5b
6:
stw r0, 0(r3)
addi r3, r3, 4
cmplw 0, r3, r4
bne 5b
6:
bne 6b
7:
mr r3, r9 /* Init Data pointer */
mr r4, r10 /* Destination Address */
bl board_init_r

Loading…
Cancel
Save