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