kernel: depend on asm/byteorder.h defining the machine endianness
Subsystems (6)
PATCH 23/23 kernel: depend on asm/byteorder.h defining the machine endianness
Move the definition of the unaligned helpers into generic.h and test the endianness from asm/byteorder.h, remove it from each asm/unaligned.h
Signed-off-by Harvey Harrison <[email protected]>
---
Perhaps consider this RFC, but it shows some of the cleanups that can happen now that the arches reliable set __BIG/LITTLE_ENDIAN
arch/alpha/include/asm/unaligned.h | 3 --- arch/arm/include/asm/unaligned.h | 11 ----------- arch/avr32/include/asm/unaligned.h | 3 --- arch/h8300/include/asm/unaligned.h | 3 --- arch/ia64/include/asm/unaligned.h | 3 --- arch/m68knommu/include/asm/unaligned.h | 11 ++--------- arch/powerpc/include/asm/unaligned.h | 3 --- arch/s390/include/asm/unaligned.h | 3 --- arch/sh/include/asm/unaligned.h | 12 +++++------- arch/sparc/include/asm/unaligned.h | 2 -- include/asm-blackfin/unaligned.h | 3 --- include/asm-cris/unaligned.h | 3 --- include/asm-frv/unaligned.h | 3 --- include/asm-m32r/unaligned.h | 12 +++++------- include/asm-m68k/unaligned.h | 3 --- include/asm-mips/unaligned.h | 16 ++++++---------- include/asm-mn10300/unaligned.h | 3 --- include/asm-parisc/unaligned.h | 2 -- include/asm-x86/unaligned.h | 4 ---- include/asm-xtensa/unaligned.h | 16 ++++++---------- include/linux/unaligned/generic.h | 10 ++++++++++ 21 files changed, 34 insertions(+), 95 deletions(-)
arch/alpha/include/asm/unaligned.h +0 -3
@@ -5,7 +5,4 @@#include <linux/unaligned/be_byteshift.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_le -#define put_unaligned __put_unaligned_le -#endif /* _ASM_ALPHA_UNALIGNED_H */
arch/arm/include/asm/unaligned.h +0 -11
@@ -5,15 +5,4 @@#include <linux/unaligned/be_byteshift.h> #include <linux/unaligned/generic.h> -/* -* Select endianness -*/ -#ifndef __ARMEB__ -#define get_unaligned __get_unaligned_le -#define put_unaligned __put_unaligned_le -#else -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be -#endif -#endif /* _ASM_ARM_UNALIGNED_H */
arch/avr32/include/asm/unaligned.h +0 -3
@@ -15,7 +15,4 @@#include <linux/unaligned/le_byteshift.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be -#endif /* _ASM_AVR32_UNALIGNED_H */
arch/h8300/include/asm/unaligned.h +0 -3
@@ -5,7 +5,4 @@#include <linux/unaligned/le_byteshift.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be -#endif /* _ASM_H8300_UNALIGNED_H */
arch/ia64/include/asm/unaligned.h +0 -3
@@ -5,7 +5,4 @@#include <linux/unaligned/be_byteshift.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_le -#define put_unaligned __put_unaligned_le -#endif /* _ASM_IA64_UNALIGNED_H */
arch/m68knommu/include/asm/unaligned.h +2 -9
@@ -5,21 +5,14 @@#ifdef CONFIG_COLDFIRE #include <linux/unaligned/be_struct.h> #include <linux/unaligned/le_byteshift.h> -#include <linux/unaligned/generic.h> - -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be#else /* * The m68k can do unaligned accesses itself. */ #include <linux/unaligned/access_ok.h> -#include <linux/unaligned/generic.h> - -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be -#endif +#include <linux/unaligned/generic.h> +#endif /* _ASM_M68KNOMMU_UNALIGNED_H */
arch/powerpc/include/asm/unaligned.h +0 -3
@@ -9,8 +9,5 @@#include <linux/unaligned/access_ok.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be -#endif /* __KERNEL__ */ #endif /* _ASM_POWERPC_UNALIGNED_H */
arch/s390/include/asm/unaligned.h +0 -3
@@ -7,7 +7,4 @@#include <linux/unaligned/access_ok.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be -#endif /* _ASM_S390_UNALIGNED_H */
arch/sh/include/asm/unaligned.h +5 -7
@@ -1,19 +1,17 @@#ifndef _ASM_SH_UNALIGNED_H#define _ASM_SH_UNALIGNED_H +#include <asm/byteorder.h> +/* SH can't handle unaligned accesses. */ -#ifdef __LITTLE_ENDIAN__ +#ifdef __LITTLE_ENDIAN# include <linux/unaligned/le_struct.h> # include <linux/unaligned/be_byteshift.h> -# include <linux/unaligned/generic.h> -# define get_unaligned __get_unaligned_le -# define put_unaligned __put_unaligned_le#else # include <linux/unaligned/be_struct.h> # include <linux/unaligned/le_byteshift.h> -# include <linux/unaligned/generic.h> -# define get_unaligned __get_unaligned_be -# define put_unaligned __put_unaligned_be#endif +#include <linux/unaligned/generic.h> +#endif /* _ASM_SH_UNALIGNED_H */
arch/sparc/include/asm/unaligned.h +0 -2
@@ -4,7 +4,5 @@#include <linux/unaligned/be_struct.h> #include <linux/unaligned/le_byteshift.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be#endif /* _ASM_SPARC_UNALIGNED_H */
include/asm-blackfin/unaligned.h +0 -3
@@ -5,7 +5,4 @@#include <linux/unaligned/be_byteshift.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_le -#define put_unaligned __put_unaligned_le -#endif /* _ASM_BLACKFIN_UNALIGNED_H */
include/asm-cris/unaligned.h +0 -3
@@ -7,7 +7,4 @@#include <linux/unaligned/access_ok.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_le -#define put_unaligned __put_unaligned_le -#endif /* _ASM_CRIS_UNALIGNED_H */
include/asm-frv/unaligned.h +0 -3
@@ -16,7 +16,4 @@#include <linux/unaligned/be_byteshift.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be -#endif /* _ASM_UNALIGNED_H */
include/asm-m32r/unaligned.h +5 -7
@@ -1,18 +1,16 @@#ifndef _ASM_M32R_UNALIGNED_H#define _ASM_M32R_UNALIGNED_H -#if defined(__LITTLE_ENDIAN__) +#include <asm/byteorder.h> + +#ifdef __LITTLE_ENDIAN# include <linux/unaligned/le_memmove.h> # include <linux/unaligned/be_byteshift.h> -# include <linux/unaligned/generic.h> -# define get_unaligned __get_unaligned_le -# define put_unaligned __put_unaligned_le#else # include <linux/unaligned/be_memmove.h> # include <linux/unaligned/le_byteshift.h> -# include <linux/unaligned/generic.h> -# define get_unaligned __get_unaligned_be -# define put_unaligned __put_unaligned_be#endif +#include <linux/unaligned/generic.h> +#endif /* _ASM_M32R_UNALIGNED_H */
include/asm-m68k/unaligned.h +0 -3
@@ -7,7 +7,4 @@#include <linux/unaligned/access_ok.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be -#endif /* _ASM_M68K_UNALIGNED_H */
include/asm-mips/unaligned.h +6 -10
@@ -9,20 +9,16 @@#define _ASM_MIPS_UNALIGNED_H#include <linux/compiler.h> -#if defined(__MIPSEB__) +#include <asm/byteorder.h> + +#ifdef __BIG_ENDIAN# include <linux/unaligned/be_struct.h> # include <linux/unaligned/le_byteshift.h> -# include <linux/unaligned/generic.h> -# define get_unaligned __get_unaligned_be -# define put_unaligned __put_unaligned_be -#elif defined(__MIPSEL__) +#else # include <linux/unaligned/le_struct.h> # include <linux/unaligned/be_byteshift.h> -# include <linux/unaligned/generic.h> -# define get_unaligned __get_unaligned_le -# define put_unaligned __put_unaligned_le -#else -# error "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"#endif +#include <linux/unaligned/generic.h> +#endif /* _ASM_MIPS_UNALIGNED_H */
include/asm-mn10300/unaligned.h +0 -3
@@ -14,7 +14,4 @@#include <linux/unaligned/access_ok.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_le -#define put_unaligned __put_unaligned_le -#endif /* _ASM_MN10300_UNALIGNED_H */
include/asm-parisc/unaligned.h +0 -2
@@ -4,8 +4,6 @@#include <linux/unaligned/be_struct.h> #include <linux/unaligned/le_byteshift.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_be -#define put_unaligned __put_unaligned_be#ifdef __KERNEL__struct pt_regs ;
include/asm-x86/unaligned.h +0 -4
@@ -4,11 +4,7 @@/* * The x86 can do unaligned accesses itself. */ -#include <linux/unaligned/access_ok.h> #include <linux/unaligned/generic.h> -#define get_unaligned __get_unaligned_le -#define put_unaligned __put_unaligned_le -#endif /* ASM_X86__UNALIGNED_H */
include/asm-xtensa/unaligned.h +6 -10
@@ -10,20 +10,16 @@#ifndef _ASM_XTENSA_UNALIGNED_H#define _ASM_XTENSA_UNALIGNED_H -#ifdef __XTENSA_EL__ +#include <asm/byteorder.h> + +#ifdef __LITTLE_ENDIAN# include <linux/unaligned/le_memmove.h> # include <linux/unaligned/be_byteshift.h> -# include <linux/unaligned/generic.h> -# define get_unaligned __get_unaligned_le -# define put_unaligned __put_unaligned_le -#elif defined(__XTENSA_EB__) +#else # include <linux/unaligned/be_memmove.h> # include <linux/unaligned/le_byteshift.h> -# include <linux/unaligned/generic.h> -# define get_unaligned __get_unaligned_be -# define put_unaligned __put_unaligned_be -#else -# error processor byte order undefined!#endif +#include <linux/unaligned/generic.h> +#endif /* _ASM_XTENSA_UNALIGNED_H */
include/linux/unaligned/generic.h +10 -0
@@ -1,6 +1,8 @@#ifndef _LINUX_UNALIGNED_GENERIC_H#define _LINUX_UNALIGNED_GENERIC_H +#include <asm/byteorder.h> +/* * Cause a link-time error if we try an unaligned access other than * 1,2,4 or 8 bytes long
@@ -65,4 +67,12 @@ extern void __bad_unaligned_access_size(void); } \ (void)0; }) +#ifdef __LITTLE_ENDIAN +# define get_unaligned __get_unaligned_le +# define put_unaligned __put_unaligned_le +#else +# define get_unaligned __get_unaligned_be +# define put_unaligned __put_unaligned_be +#endif +#endif /* _LINUX_UNALIGNED_GENERIC_H */
Signature · 1 line
1.6.0.274.g8aacc