From acbbbe9f5ab52da90a8edec02ec973e7f44dae81 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 23 Oct 2007 22:37:23 +0200 Subject: [PATCH] x86: merge byteorder_32/64.h Signed-off-by: Ingo Molnar Signed-off-by: Thomas Gleixner --- include/asm-x86/Kbuild | 2 -- include/asm-x86/{byteorder_32.h => byteorder.h} | 44 ++++++++++++++++--------- include/asm-x86/byteorder_64.h | 33 ------------------- 3 files changed, 29 insertions(+), 50 deletions(-) rename include/asm-x86/{byteorder_32.h => byteorder.h} (61%) delete mode 100644 include/asm-x86/byteorder_64.h diff --git a/include/asm-x86/Kbuild b/include/asm-x86/Kbuild index 435074af198..26b0dcda5ac 100644 --- a/include/asm-x86/Kbuild +++ b/include/asm-x86/Kbuild @@ -11,8 +11,6 @@ header-y += sigcontext32.h header-y += ucontext.h header-y += vsyscall32.h -unifdef-y += byteorder_32.h -unifdef-y += byteorder_64.h unifdef-y += e820.h unifdef-y += elf_32.h unifdef-y += elf_64.h diff --git a/include/asm-x86/byteorder_32.h b/include/asm-x86/byteorder.h similarity index 61% rename from include/asm-x86/byteorder_32.h rename to include/asm-x86/byteorder.h index a45470a8b74..1f2d6d5bf20 100644 --- a/include/asm-x86/byteorder_32.h +++ b/include/asm-x86/byteorder.h @@ -1,14 +1,12 @@ -#ifndef _I386_BYTEORDER_H -#define _I386_BYTEORDER_H +#ifndef _ASM_X86_BYTEORDER_H +#define _ASM_X86_BYTEORDER_H #include #include #ifdef __GNUC__ -/* For avoiding bswap on i386 */ -#ifdef __KERNEL__ -#endif +#ifdef __i386__ static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x) { @@ -25,23 +23,39 @@ static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x) } static __inline__ __attribute_const__ __u64 ___arch__swab64(__u64 val) -{ - union { +{ + union { struct { __u32 a,b; } s; __u64 u; } v; v.u = val; #ifdef CONFIG_X86_BSWAP - asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1" - : "=r" (v.s.a), "=r" (v.s.b) - : "0" (v.s.a), "1" (v.s.b)); + asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r" (v.s.a), "=r" (v.s.b) + : "0" (v.s.a), "1" (v.s.b)); #else - v.s.a = ___arch__swab32(v.s.a); - v.s.b = ___arch__swab32(v.s.b); + v.s.a = ___arch__swab32(v.s.a); + v.s.b = ___arch__swab32(v.s.b); asm("xchgl %0,%1" : "=r" (v.s.a), "=r" (v.s.b) : "0" (v.s.a), "1" (v.s.b)); #endif - return v.u; -} + return v.u; +} + +#else /* __i386__ */ + +static __inline__ __attribute_const__ __u64 ___arch__swab64(__u64 x) +{ + __asm__("bswapq %0" : "=r" (x) : "0" (x)); + return x; +} + +static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x) +{ + __asm__("bswapl %0" : "=r" (x) : "0" (x)); + return x; +} + +#endif /* Do not define swab16. Gcc is smart enough to recognize "C" version and convert it into rotation or exhange. */ @@ -55,4 +69,4 @@ static __inline__ __attribute_const__ __u64 ___arch__swab64(__u64 val) #include -#endif /* _I386_BYTEORDER_H */ +#endif /* _ASM_X86_BYTEORDER_H */ diff --git a/include/asm-x86/byteorder_64.h b/include/asm-x86/byteorder_64.h deleted file mode 100644 index 5e86c868c75..00000000000 --- a/include/asm-x86/byteorder_64.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef _X86_64_BYTEORDER_H -#define _X86_64_BYTEORDER_H - -#include -#include - -#ifdef __GNUC__ - -static __inline__ __attribute_const__ __u64 ___arch__swab64(__u64 x) -{ - __asm__("bswapq %0" : "=r" (x) : "0" (x)); - return x; -} - -static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x) -{ - __asm__("bswapl %0" : "=r" (x) : "0" (x)); - return x; -} - -/* Do not define swab16. Gcc is smart enough to recognize "C" version and - convert it into rotation or exhange. */ - -#define __arch__swab32(x) ___arch__swab32(x) -#define __arch__swab64(x) ___arch__swab64(x) - -#endif /* __GNUC__ */ - -#define __BYTEORDER_HAS_U64__ - -#include - -#endif /* _X86_64_BYTEORDER_H */ -- 2.11.4.GIT