1 #ifndef _X86_64_BYTEORDER_H 2 #define _X86_64_BYTEORDER_H 3 4 #include <asm/types.h> 5 #include <linux/compiler.h> 6 7 #ifdef __GNUC__ 8 ___arch__swab64(__u64 x)9static __inline__ __attribute_const__ __u64 ___arch__swab64(__u64 x) 10 { 11 __asm__("bswapq %0" : "=r" (x) : "0" (x)); 12 return x; 13 } 14 ___arch__swab32(__u32 x)15static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x) 16 { 17 __asm__("bswapl %0" : "=r" (x) : "0" (x)); 18 return x; 19 } 20 21 /* Do not define swab16. Gcc is smart enought to recognize "C" version and 22 convert it into rotation or exhange. */ 23 24 #define __arch__swab32(x) ___arch__swab32(x) 25 #define __arch__swab64(x) ___arch__swab64(x) 26 27 #endif /* __GNUC__ */ 28 29 #define __BYTEORDER_HAS_U64__ 30 31 #include <linux/byteorder/little_endian.h> 32 33 #endif /* _X86_64_BYTEORDER_H */ 34