Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. #ifndef _ASM_X86_SWAB_H
  2. #define _ASM_X86_SWAB_H
  3.  
  4. #include <linux/types.h>
  5. #include <linux/compiler.h>
  6.  
  7. static inline __attribute_const__ __u32 __arch_swab32(__u32 val)
  8. {
  9.         asm("bswapl %0" : "=r" (val) : "0" (val));
  10.         return val;
  11. }
  12. #define __arch_swab32 __arch_swab32
  13.  
  14. static inline __attribute_const__ __u64 __arch_swab64(__u64 val)
  15. {
  16. #ifdef __i386__
  17.         union {
  18.                 struct {
  19.                         __u32 a;
  20.                         __u32 b;
  21.                 } s;
  22.                 __u64 u;
  23.         } v;
  24.         v.u = val;
  25.         asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
  26.             : "=r" (v.s.a), "=r" (v.s.b)
  27.             : "0" (v.s.a), "1" (v.s.b));
  28.         return v.u;
  29. #else /* __i386__ */
  30.         asm("bswapq %0" : "=r" (val) : "0" (val));
  31.         return val;
  32. #endif
  33. }
  34. #define __arch_swab64 __arch_swab64
  35.  
  36. #endif /* _ASM_X86_SWAB_H */
  37.