ARM: tegra: solve adr range issue with THUMB2_KERNEL enabled
authorStephen Warren <swarren@nvidia.com>
Tue, 16 Apr 2013 17:09:09 +0000 (11:09 -0600)
committerOlof Johansson <olof@lixom.net>
Thu, 18 Apr 2013 16:35:19 +0000 (09:35 -0700)
When building the kernel with CONFIG_THUMB2_KERNEL enabled, older
assemblers may emit the following error:

reset-handler.S:78: Error: invalid immediate for address calculation (value = 0x00000004)

Using an explicit adr.w instruction will solve this. Newer assemblers do
this automatically. Use the W() macro to do this under Thumb mode only.

Inspired-by: Joseph Lo <josephl@nvidia.com>
Suggested-by: Dave Martin <dave.martin@linaro.org>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Olof Johansson <olof@lixom.net>
arch/arm/mach-tegra/sleep.h

index 4ffae54..bb308ea 100644 (file)
@@ -92,7 +92,7 @@
 
 #ifdef CONFIG_CACHE_L2X0
 .macro l2_cache_resume, tmp1, tmp2, tmp3, phys_l2x0_saved_regs
-       adr     \tmp1, \phys_l2x0_saved_regs
+       W(adr)  \tmp1, \phys_l2x0_saved_regs
        ldr     \tmp1, [\tmp1]
        ldr     \tmp2, [\tmp1, #L2X0_R_PHY_BASE]
        ldr     \tmp3, [\tmp2, #L2X0_CTRL]