1*fea25720SGraeme Russ #ifndef _I386_BYTEORDER_H 2*fea25720SGraeme Russ #define _I386_BYTEORDER_H 3*fea25720SGraeme Russ 4*fea25720SGraeme Russ #include <asm/types.h> 5*fea25720SGraeme Russ 6*fea25720SGraeme Russ #ifdef __GNUC__ 7*fea25720SGraeme Russ 8*fea25720SGraeme Russ 9*fea25720SGraeme Russ static __inline__ __u32 ___arch__swab32(__u32 x) 10*fea25720SGraeme Russ { 11*fea25720SGraeme Russ #ifdef CONFIG_X86_BSWAP 12*fea25720SGraeme Russ __asm__("bswap %0" : "=r" (x) : "0" (x)); 13*fea25720SGraeme Russ #else 14*fea25720SGraeme Russ __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */ 15*fea25720SGraeme Russ "rorl $16,%0\n\t" /* swap words */ 16*fea25720SGraeme Russ "xchgb %b0,%h0" /* swap higher bytes */ 17*fea25720SGraeme Russ :"=q" (x) 18*fea25720SGraeme Russ : "0" (x)); 19*fea25720SGraeme Russ #endif 20*fea25720SGraeme Russ return x; 21*fea25720SGraeme Russ } 22*fea25720SGraeme Russ 23*fea25720SGraeme Russ static __inline__ __u16 ___arch__swab16(__u16 x) 24*fea25720SGraeme Russ { 25*fea25720SGraeme Russ __asm__("xchgb %b0,%h0" /* swap bytes */ \ 26*fea25720SGraeme Russ : "=q" (x) \ 27*fea25720SGraeme Russ : "0" (x)); \ 28*fea25720SGraeme Russ return x; 29*fea25720SGraeme Russ } 30*fea25720SGraeme Russ 31*fea25720SGraeme Russ #define __arch__swab32(x) ___arch__swab32(x) 32*fea25720SGraeme Russ #define __arch__swab16(x) ___arch__swab16(x) 33*fea25720SGraeme Russ 34*fea25720SGraeme Russ #if !defined(__STRICT_ANSI__) || defined(__KERNEL__) 35*fea25720SGraeme Russ # define __BYTEORDER_HAS_U64__ 36*fea25720SGraeme Russ # define __SWAB_64_THRU_32__ 37*fea25720SGraeme Russ #endif 38*fea25720SGraeme Russ 39*fea25720SGraeme Russ #endif /* __GNUC__ */ 40*fea25720SGraeme Russ 41*fea25720SGraeme Russ #include <linux/byteorder/little_endian.h> 42*fea25720SGraeme Russ 43*fea25720SGraeme Russ #endif /* _I386_BYTEORDER_H */ 44