home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-sh64 / byteorder.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.0 KB  |  50 lines

  1. #ifndef __ASM_SH64_BYTEORDER_H
  2. #define __ASM_SH64_BYTEORDER_H
  3.  
  4. /*
  5.  * This file is subject to the terms and conditions of the GNU General Public
  6.  * License.  See the file "COPYING" in the main directory of this archive
  7.  * for more details.
  8.  *
  9.  * include/asm-sh64/byteorder.h
  10.  *
  11.  * Copyright (C) 2000, 2001  Paolo Alberelli
  12.  *
  13.  */
  14.  
  15. #include <asm/types.h>
  16.  
  17. static __inline__ __const__ __u32 ___arch__swab32(__u32 x)
  18. {
  19.     __asm__("byterev    %0, %0\n\t"
  20.         "shari        %0, 32, %0"
  21.         : "=r" (x)
  22.         : "0" (x));
  23.     return x;
  24. }
  25.  
  26. static __inline__ __const__ __u16 ___arch__swab16(__u16 x)
  27. {
  28.     __asm__("byterev    %0, %0\n\t"
  29.         "shari        %0, 48, %0"
  30.         : "=r" (x)
  31.         : "0" (x));
  32.     return x;
  33. }
  34.  
  35. #define __arch__swab32(x) ___arch__swab32(x)
  36. #define __arch__swab16(x) ___arch__swab16(x)
  37.  
  38. #if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
  39. #  define __BYTEORDER_HAS_U64__
  40. #  define __SWAB_64_THRU_32__
  41. #endif
  42.  
  43. #ifdef __LITTLE_ENDIAN__
  44. #include <linux/byteorder/little_endian.h>
  45. #else
  46. #include <linux/byteorder/big_endian.h>
  47. #endif
  48.  
  49. #endif /* __ASM_SH64_BYTEORDER_H */
  50.