root/arch/mips/include/asm/mach-cavium-octeon/mangle-port.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. __should_swizzle_bits
  2. __should_swizzle_addr

   1 /*
   2  * This file is subject to the terms and conditions of the GNU General Public
   3  * License.  See the file "COPYING" in the main directory of this archive
   4  * for more details.
   5  *
   6  * Copyright (C) 2003, 2004 Ralf Baechle
   7  */
   8 #ifndef __ASM_MACH_GENERIC_MANGLE_PORT_H
   9 #define __ASM_MACH_GENERIC_MANGLE_PORT_H
  10 
  11 #include <asm/byteorder.h>
  12 
  13 #ifdef __BIG_ENDIAN
  14 
  15 static inline bool __should_swizzle_bits(volatile void *a)
  16 {
  17         extern const bool octeon_should_swizzle_table[];
  18         u64 did = ((u64)(uintptr_t)a >> 40) & 0xff;
  19 
  20         return octeon_should_swizzle_table[did];
  21 }
  22 
  23 # define __swizzle_addr_b(port) (port)
  24 # define __swizzle_addr_w(port) (port)
  25 # define __swizzle_addr_l(port) (port)
  26 # define __swizzle_addr_q(port) (port)
  27 
  28 #else /* __LITTLE_ENDIAN */
  29 
  30 #define __should_swizzle_bits(a)        false
  31 
  32 static inline bool __should_swizzle_addr(u64 p)
  33 {
  34         /* boot bus? */
  35         return ((p >> 40) & 0xff) == 0;
  36 }
  37 
  38 # define __swizzle_addr_b(port) \
  39         (__should_swizzle_addr(port) ? (port) ^ 7 : (port))
  40 # define __swizzle_addr_w(port) \
  41         (__should_swizzle_addr(port) ? (port) ^ 6 : (port))
  42 # define __swizzle_addr_l(port) \
  43         (__should_swizzle_addr(port) ? (port) ^ 4 : (port))
  44 # define __swizzle_addr_q(port) (port)
  45 
  46 #endif /* __BIG_ENDIAN */
  47 
  48 
  49 # define ioswabb(a, x)          (x)
  50 # define __mem_ioswabb(a, x)    (x)
  51 # define ioswabw(a, x)          (__should_swizzle_bits(a) ? le16_to_cpu(x) : x)
  52 # define __mem_ioswabw(a, x)    (x)
  53 # define ioswabl(a, x)          (__should_swizzle_bits(a) ? le32_to_cpu(x) : x)
  54 # define __mem_ioswabl(a, x)    (x)
  55 # define ioswabq(a, x)          (__should_swizzle_bits(a) ? le64_to_cpu(x) : x)
  56 # define __mem_ioswabq(a, x)    (x)
  57 
  58 #endif /* __ASM_MACH_GENERIC_MANGLE_PORT_H */

/* [<][>][^][v][top][bottom][index][help] */