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-06-02 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