File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/uapi/asm/swab.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       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: