diff options
author | Dave Martin <dave.martin@linaro.org> | 2010-11-05 17:39:44 +0000 |
---|---|---|
committer | Dave Martin <dave.martin@linaro.org> | 2011-02-23 12:27:19 +0000 |
commit | c89067880b6c2e10519ea8bb78a9185b51033984 (patch) | |
tree | bada3cf74b004d0c9f6244537de6a77d919b6c25 /arch | |
parent | e7e9a3a79201bbe65fe0fad512563fb4c5609294 (diff) |
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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/kernel/relocate_kernel.S | 12 |
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: |