linux/fs/jfs/endian24.h
<<
>>
Prefs
   1/*
   2 *   Copyright (C) International Business Machines Corp., 2001
   3 *
   4 *   This program is free software;  you can redistribute it and/or modify
   5 *   it under the terms of the GNU General Public License as published by
   6 *   the Free Software Foundation; either version 2 of the License, or
   7 *   (at your option) any later version.
   8 *
   9 *   This program is distributed in the hope that it will be useful,
  10 *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
  11 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
  12 *   the GNU General Public License for more details.
  13 *
  14 *   You should have received a copy of the GNU General Public License
  15 *   along with this program;  if not, write to the Free Software
  16 *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17 */
  18#ifndef _H_ENDIAN24
  19#define _H_ENDIAN24
  20
  21/*
  22 *      endian24.h:
  23 *
  24 * Endian conversion for 24-byte data
  25 *
  26 */
  27#define __swab24(x) \
  28({ \
  29        __u32 __x = (x); \
  30        ((__u32)( \
  31                ((__x & (__u32)0x000000ffUL) << 16) | \
  32                 (__x & (__u32)0x0000ff00UL)        | \
  33                ((__x & (__u32)0x00ff0000UL) >> 16) )); \
  34})
  35
  36#if (defined(__KERNEL__) && defined(__LITTLE_ENDIAN)) || (defined(__BYTE_ORDER) && (__BYTE_ORDER == __LITTLE_ENDIAN))
  37        #define __cpu_to_le24(x) ((__u32)(x))
  38        #define __le24_to_cpu(x) ((__u32)(x))
  39#else
  40        #define __cpu_to_le24(x) __swab24(x)
  41        #define __le24_to_cpu(x) __swab24(x)
  42#endif
  43
  44#ifdef __KERNEL__
  45        #define cpu_to_le24 __cpu_to_le24
  46        #define le24_to_cpu __le24_to_cpu
  47#endif
  48
  49#endif                          /* !_H_ENDIAN24 */
  50
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.