I doubt the stack_setup() was defective before:
we load the current location of _start and compare against destination
of relocate_code(). If we are already there we shoud skip the
relocation and jump over to clear_bss. Before the clear_bss was also skipped.
Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
mov sp, r4
adr r0, _start
- cmp r0, r6
#ifndef CONFIG_PRELOADER
- beq jump_2_ram
+ cmp r0, r6
+ beq clear_bss /* skip relocation */
#endif
mov r1, r6 /* r1 <- scratch for copy_loop */
ldr r2, _TEXT_BASE