ARM: tegra: fix relocation truncated error when THUMB2_KERNEL enabled
authorJoseph Lo <josephl@nvidia.com>
Mon, 15 Apr 2013 22:50:54 +0000 (16:50 -0600)
committerOlof Johansson <olof@lixom.net>
Thu, 18 Apr 2013 16:30:40 +0000 (09:30 -0700)
The conditional branch instruction in Thumb2 only available to short range.
The linker will fail when the conditional branch over the range. Then
resulting in link error when generating kernel image. e.g.:

arch/arm/mach-tegra/reset-handler.S:47:(.text+0xf8e):
relocation truncated to fit: R_ARM_THM_JUMP19 against symbol
`cpu_resume' defined in .data section in arch/arm/kernel/built-in.o

This patch using a Thumb2 instruction IT (if-then) to have a longer branch
range.

Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Joseph Lo <josephl@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Dave Martin <dave.martin@linaro.org>
Signed-off-by: Olof Johansson <olof@lixom.net>
arch/arm/mach-tegra/reset-handler.S

index 1676aba5e7b84ecf97c577b2ccc8d5ff565308dd..e6de88a2ea06c022604f3909ea1400c658445380 100644 (file)
@@ -44,6 +44,7 @@ ENTRY(tegra_resume)
 
        cpu_id  r0
        cmp     r0, #0                          @ CPU0?
+ THUMB(        it      ne )
        bne     cpu_resume                      @ no
 
 #ifdef CONFIG_ARCH_TEGRA_3x_SOC