diff options
author | Thomas Chou | 2015-09-07 08:57:14 +0800 |
---|---|---|
committer | Thomas Chou | 2015-10-23 07:28:37 +0800 |
commit | 4192b8c35851afd2ac0731b851711fc12ffe888d (patch) | |
tree | bb66ea99156c693a7f0dc2ad9bd548e1318dd34a /arch/nios2 | |
parent | b6c180928c3c7c9efbdc5eb1b468c450c877abdf (diff) |
nios2: BSS should be cleared only after board_init_f
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>
Diffstat (limited to 'arch/nios2')
-rw-r--r-- | arch/nios2/cpu/start.S | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/arch/nios2/cpu/start.S b/arch/nios2/cpu/start.S index 6af9b4e9433..9e440c21362 100644 --- a/arch/nios2/cpu/start.S +++ b/arch/nios2/cpu/start.S @@ -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 |