LCOV - app.info - /usr/include/asm/byteorder.h

LCOV - code coverage report
| Current view: | directory - usr/include/asm - byteorder.h (source / functions) |  | Found | Hit | Coverage |
| Test: | app.info | Lines: | 9 | 0 | 0.0 %
| Date: | 2012-04-07 | Functions: | 2 | 0 | 0.0 %

           1                 : #ifndef _I386_BYTEORDER_H
           2                 : #define _I386_BYTEORDER_H
           3                 :
           4                 : #include <asm/types.h>
           5                 :
           6                 : #ifdef __GNUC__
           7                 :
           8                 : /* For avoiding bswap on i386 */
           9                 :
          10               0 : static __inline__ __u32 ___arch__swab32(__u32 x)
          11                 : {
          12                 : #ifdef CONFIG_X86_BSWAP
          13                 :         __asm__("bswap %0" : "=r" (x) : "0" (x));
          14                 : #else
          15                 :         __asm__("xchgb %b0,%h0\n\t"   /* swap lower bytes     */
          16                 :                 "rorl $16,%0\n\t"     /* swap words           */
          17                 :                 "xchgb %b0,%h0"               /* swap higher bytes    */
          18                 :                 :"=q" (x)
          19               0 :                 : "0" (x));
          20                 : #endif
          21               0 :         return x;
          22                 : }
          23                 :
          24               0 : static __inline__ __u64 ___arch__swab64(__u64 val)
          25                 : {
          26                 :         union {
          27                 :                 struct { __u32 a,b; } s;
          28                 :                 __u64 u;
          29                 :         } v;
          30               0 :         v.u = val;
          31                 : #ifdef CONFIG_X86_BSWAP
          32                 :         asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
          33                 :             : "=r" (v.s.a), "=r" (v.s.b)
          34                 :             : "0" (v.s.a), "1" (v.s.b));
          35                 : #else
          36               0 :    v.s.a = ___arch__swab32(v.s.a);
          37               0 :         v.s.b = ___arch__swab32(v.s.b);
          38               0 :         asm("xchgl %0,%1" : "=r" (v.s.a), "=r" (v.s.b) : "0" (v.s.a), "1" (v.s.b));
          39                 : #endif
          40               0 :         return v.u;
          41                 : }
          42                 :
          43                 : /* Do not define swab16.  Gcc is smart enough to recognize "C" version and
          44                 :    convert it into rotation or exhange.  */
          45                 :
          46                 : #define __arch__swab64(x) ___arch__swab64(x)
          47                 : #define __arch__swab32(x) ___arch__swab32(x)
          48                 :
          49                 : #define __BYTEORDER_HAS_U64__
          50                 :
          51                 : #endif /* __GNUC__ */
          52                 :
          53                 : #include <linux/byteorder/little_endian.h>
          54                 :
          55                 : #endif /* _I386_BYTEORDER_H */

Generated by: LCOV version 1.7