From: Anatolij Gustschin Date: Wed, 5 Dec 2007 16:43:20 +0000 (+0100) Subject: Fix ppc4xx clear_bss() code X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=42ed33ffe135f618680f9d6e9712eb35a85bcb62;p=u-boot.git 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 --- diff --git a/cpu/ppc4xx/start.S b/cpu/ppc4xx/start.S index 645ac0b8dd..52601ed700 100644 --- a/cpu/ppc4xx/start.S +++ b/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