]> git.sur5r.net Git - u-boot/commitdiff
nios2: BSS should be cleared only after board_init_f
authorThomas Chou <thomas@wytron.com.tw>
Mon, 7 Sep 2015 00:57:14 +0000 (08:57 +0800)
committerThomas Chou <thomas@wytron.com.tw>
Thu, 22 Oct 2015 23:28:37 +0000 (07:28 +0800)
As dtb in u-boot-dtb.bin overlapped the BSS section,
we should delay the clearing of BSS until dtb is relocated
in board_init_f().

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
Acked-by: Marek Vasut <marex@denx.de>
arch/nios2/cpu/start.S

index 6af9b4e94334f80f22057646b12db3d1c58f7799..9e440c213624ad1ea61f56e55189eb55c4476c90 100644 (file)
@@ -82,20 +82,6 @@ _cur:        movhi   r5, %hi(_cur - _start)
        bne     r5, r6, 2b
 3:
 
-       /* ZERO BSS/SBSS -- bss and sbss are assumed to be adjacent
-        * and between __bss_start and __bss_end.
-        */
-        movhi  r5, %hi(__bss_start)
-        ori    r5, r5, %lo(__bss_start)
-        movhi  r6, %hi(__bss_end)
-        ori    r6, r6, %lo(__bss_end)
-        beq    r5, r6, 5f
-
-4:     stwio   r0, 0(r5)
-        addi   r5, r5, 4
-        bne    r5, r6, 4b
-5:
-
        /* JUMP TO RELOC ADDR */
        movhi   r4, %hi(_reloc)
        ori     r4, r4, %lo(_reloc)
@@ -167,6 +153,22 @@ _reloc:
 relocate_code:
        mov     sp, r4          /* Set the new sp */
        mov     r4, r5
+
+       /*
+        * ZERO BSS/SBSS -- bss and sbss are assumed to be adjacent
+        * and between __bss_start and __bss_end.
+        */
+       movhi   r5, %hi(__bss_start)
+       ori     r5, r5, %lo(__bss_start)
+       movhi   r6, %hi(__bss_end)
+       ori     r6, r6, %lo(__bss_end)
+       beq     r5, r6, 5f
+
+4:     stwio   r0, 0(r5)
+       addi    r5, r5, 4
+       bne     r5, r6, 4b
+5:
+
        movhi   r8, %hi(board_init_r@h)
        ori     r8, r8, %lo(board_init_r@h)
        callr   r8