From: James Hogan Date: Wed, 30 May 2012 10:23:23 +0000 (+0100) Subject: Add HAVE_64BIT_ALIGNED_ACCESS X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=c19fa94a8fed72754e81800dfa14af6daaf6d331;p=openwrt%2Fstaging%2Fblogic.git Add HAVE_64BIT_ALIGNED_ACCESS On 64 bit architectures with no efficient unaligned access, padding and explicit alignment must be added in various places to prevent unaligned 64bit accesses (such as taskstats and trace ring buffer). However this also needs to apply to 32 bit architectures with 64 bit accesses requiring alignment such as metag. This is solved by adding a new Kconfig symbol HAVE_64BIT_ALIGNED_ACCESS which defaults to 64BIT && !HAVE_EFFICIENT_UNALIGNED_ACCESS, and can be explicitly selected by METAG and any other relevant architectures. This can be used in various places to determine whether 64bit alignment is required. Signed-off-by: James Hogan Cc: Al Viro Cc: Ingo Molnar Cc: Andrew Morton Cc: Eric Paris Cc: Will Drewry --- diff --git a/arch/Kconfig b/arch/Kconfig index 7f8f281f2585..45bc593d10e1 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -94,6 +94,22 @@ config UPROBES If in doubt, say "N". +config HAVE_64BIT_ALIGNED_ACCESS + def_bool 64BIT && !HAVE_EFFICIENT_UNALIGNED_ACCESS + help + Some architectures require 64 bit accesses to be 64 bit + aligned, which also requires structs containing 64 bit values + to be 64 bit aligned too. This includes some 32 bit + architectures which can do 64 bit accesses, as well as 64 bit + architectures without unaligned access. + + This symbol should be selected by an architecture if 64 bit + accesses are required to be 64 bit aligned in this way even + though it is not a 64 bit architecture. + + See Documentation/unaligned-memory-access.txt for more + information on the topic of unaligned memory accesses. + config HAVE_EFFICIENT_UNALIGNED_ACCESS bool help