path: root/arch/arm/
diff options
authorJeroen Hofstee <>2013-08-24 13:55:38 +0200
committerAlbert ARIBAUD <>2013-09-23 14:36:50 +0200
commit373d79839451de08c3dce9231a133178378c4590 (patch)
treecd6c2c2780a1d51eb9f05d0a5b1105cc0821c841 /arch/arm/
parentad31ff6a4f5e420637da256e8d259bc0c63b0d2b (diff)
arm: prevent using movt/movw address loads
The movt/movw instruction can be used to hardcode an memory location in the instruction itself. The linker starts complaining about this if the compiler decides to do so: "relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used" and it is not support by U-boot as well. Prevent their use by requiring word relocations. This allows u-boot to be build at other optimalization levels then -Os. Signed-off-by: Jeroen Hofstee <> Cc: Cc: Albert ARIBAUD <> Acked-by: Simon Glass <>
Diffstat (limited to 'arch/arm/')
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/arm/ b/arch/arm/
index ce3903ba9f..19451ba668 100644
--- a/arch/arm/
+++ b/arch/arm/
@@ -94,7 +94,11 @@ PLATFORM_RELFLAGS += -fno-optimize-sibling-calls
-# check that only R_ARM_RELATIVE relocations are generated
ifneq ($(CONFIG_SPL_BUILD),y)
-ALL-y += checkarmreloc
+# Check that only R_ARM_RELATIVE relocations are generated.
+ALL-y += checkarmreloc
+# The movt / movw can hardcode 16 bit parts of the addresses in the
+# instruction. Relocation is not supported for that case, so disable
+# such usage by requiring word relocations.
+PLATFORM_CPPFLAGS += $(call cc-option, -mword-relocations)
OpenPOWER on IntegriCloud