diff options
author | Andreas Bießmann <andreas.devel@googlemail.com> | 2010-12-01 00:58:34 +0100 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2010-12-09 11:01:15 +0100 |
commit | a1a47d3c57e3bc3c49bc1eca94c00eba4880d2c3 (patch) | |
tree | 0f17f75076e1a8c6ee7d868c3924722a7c803f15 /arch/arm/cpu/armv7/start.S | |
parent | a78fb68f718383ba7eea410340be66e94cd3540d (diff) |
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.S | 8 |
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] */ |