summaryrefslogtreecommitdiffstats
path: root/arch/arm/cpu/armv7/start.S
diff options
context:
space:
mode:
authorAndreas Bießmann <andreas.devel@googlemail.com>2010-12-01 00:58:34 +0100
committerWolfgang Denk <wd@denx.de>2010-12-09 11:01:15 +0100
commita1a47d3c57e3bc3c49bc1eca94c00eba4880d2c3 (patch)
tree0f17f75076e1a8c6ee7d868c3924722a7c803f15 /arch/arm/cpu/armv7/start.S
parenta78fb68f718383ba7eea410340be66e94cd3540d (diff)
downloadtalos-obmc-uboot-a1a47d3c57e3bc3c49bc1eca94c00eba4880d2c3.tar.gz
talos-obmc-uboot-a1a47d3c57e3bc3c49bc1eca94c00eba4880d2c3.zip
arm: relocate_code(): do not set register useless
In case we are still at relocation target address before relocation we do not need to load the registers needed for relocation. We should instead skip the whole relocation part and jump over to clear_bss immediately. Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
Diffstat (limited to 'arch/arm/cpu/armv7/start.S')
-rw-r--r--arch/arm/cpu/armv7/start.S8
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S
index fe982352f5..0cb5f34afe 100644
--- a/arch/arm/cpu/armv7/start.S
+++ b/arch/arm/cpu/armv7/start.S
@@ -166,14 +166,14 @@ stack_setup:
mov sp, r4
adr r0, _start
- ldr r2, _TEXT_BASE
- ldr r3, _bss_start_ofs
- add r2, r0, r3 /* r2 <- source end address */
- mov r1, r6 /* r1 <- scratch for copy_loop */
cmp r0, r6
#ifndef CONFIG_PRELOADER
beq jump_2_ram
#endif
+ mov r1, r6 /* r1 <- scratch for copy_loop */
+ ldr r2, _TEXT_BASE
+ ldr r3, _bss_start_ofs
+ add r2, r0, r3 /* r2 <- source end address */
copy_loop:
ldmia r0!, {r9-r10} /* copy from source address [r0] */
OpenPOWER on IntegriCloud