ARM: 7592/1: nommu: prevent generation of kernel unaligned memory accesses
authorWill Deacon <will.deacon@arm.com>
Tue, 4 Dec 2012 11:56:44 +0000 (12:56 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 7 Dec 2012 11:48:57 +0000 (11:48 +0000)
Recent ARMv7 toolchains assume that unaligned memory accesses will not
fault and will instead be handled by the processor.

For the nommu case (without an MPU), memory will be treated as
strongly-ordered and therefore unaligned accesses may fault regardless
of the SCTLR.A setting.

This patch passes -mno-unaligned-access to GCC when compiling for nommu
targets, preventing the generation of unaligned memory access in the
kernel.

Acked-by: Nicolas Pitre <nico@linaro.org>
Tested-by: Jonathan Austin <jonathan.austin@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/Makefile

index f023e3acdfbd8c7c17335cfa9518df05119f4ab7..cbe364210c7d62cc19e94caffc186f8bafea0ef8 100644 (file)
@@ -34,6 +34,7 @@ KBUILD_DEFCONFIG := versatile_defconfig
 # defines filename extension depending memory management type.
 ifeq ($(CONFIG_MMU),)
 MMUEXT         := -nommu
+KBUILD_CFLAGS  += $(call cc-option,-mno-unaligned-access)
 endif
 
 ifeq ($(CONFIG_FRAME_POINTER),y)