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>
This commit is contained in:
Anatolij Gustschin 2007-12-05 17:43:20 +01:00 committed by Stefan Roese
parent 85dc2a7f82
commit 42ed33ffe1
1 changed files with 13 additions and 4 deletions

View File

@ -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