diff options
author | Andreas Bießmann <andreas.devel@googlemail.com> | 2010-12-01 00:58:36 +0100 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2010-12-09 11:01:16 +0100 |
commit | b9c5081d7d6ebc3290813675ca8771f4471edb85 (patch) | |
tree | c914a55c317ff09cc358421413bb9670bb0b9f22 /arch/arm | |
parent | 1f52d89f2b4b5ca8dde7aa1be02bb1c658e0aa13 (diff) |
armv7: fix relocation skip
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>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/cpu/armv7/start.S | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S index 02fdfc7976..c71ef6cf92 100644 --- a/arch/arm/cpu/armv7/start.S +++ b/arch/arm/cpu/armv7/start.S @@ -166,9 +166,9 @@ stack_setup: 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 |