aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Martin <dave.martin@linaro.org>2010-11-05 17:39:44 +0000
committerDave Martin <dave.martin@linaro.org>2011-02-23 12:27:19 +0000
commitc89067880b6c2e10519ea8bb78a9185b51033984 (patch)
treebada3cf74b004d0c9f6244537de6a77d919b6c25
parente7e9a3a79201bbe65fe0fad512563fb4c5609294 (diff)
downloadlinux-linaro-c89067880b6c2e10519ea8bb78a9185b51033984.tar.gz
ARM: Add local symbols in relocate_kernel.S to work around gas bugs
In rare cases, gas is unable to fix up references to global symbols in the same object when building for Thumb-2. This patch provides a dirty temporary workaround and shouldn't be merged upstream. The issue affects at least ubuntu/linaro binutils (2.20.51.20100908-0ubuntu2) and binutils upstream. Allegedly, there's a fix in the pipeline. Since this patch works around a known toolchain bug, it is not expected to merge upstream. Signed-off-by: Dave Martin <dave.martin@linaro.org>
-rw-r--r--arch/arm/kernel/relocate_kernel.S12
1 files changed, 8 insertions, 4 deletions
diff --git a/arch/arm/kernel/relocate_kernel.S b/arch/arm/kernel/relocate_kernel.S
index 9cf4cbf8f95..a2599e7e151 100644
--- a/arch/arm/kernel/relocate_kernel.S
+++ b/arch/arm/kernel/relocate_kernel.S
@@ -7,8 +7,8 @@
.globl relocate_new_kernel
relocate_new_kernel:
- ldr r0,kexec_indirection_page
- ldr r1,kexec_start_address
+ ldr r0,__kexec_indirection_page
+ ldr r1,__kexec_start_address
/*
* If there is no indirection page (we are doing crashdumps)
@@ -55,27 +55,31 @@ relocate_new_kernel:
/* Jump to relocated kernel */
mov lr,r1
mov r0,#0
- ldr r1,kexec_mach_type
- ldr r2,kexec_boot_atags
+ ldr r1,__kexec_mach_type
+ ldr r2,__kexec_boot_atags
mov pc,lr
.align
.globl kexec_start_address
kexec_start_address:
+__kexec_start_address:
.long 0x0
.globl kexec_indirection_page
kexec_indirection_page:
+__kexec_indirection_page:
.long 0x0
.globl kexec_mach_type
kexec_mach_type:
+__kexec_mach_type:
.long 0x0
/* phy addr of the atags for the new kernel */
.globl kexec_boot_atags
kexec_boot_atags:
+__kexec_boot_atags:
.long 0x0
relocate_new_kernel_end: