Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

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