~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/mips/include/asm/mach-cavium-octeon/mangle-port.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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) ?             \
 52                                  le16_to_cpu((__force __le16)(x)) :     \
 53                                  (x))
 54 # define __mem_ioswabw(a, x)    (x)
 55 # define ioswabl(a, x)          (__should_swizzle_bits(a) ?             \
 56                                  le32_to_cpu((__force __le32)(x)) :     \
 57                                  (x))
 58 # define __mem_ioswabl(a, x)    (x)
 59 # define ioswabq(a, x)          (__should_swizzle_bits(a) ?             \
 60                                  le64_to_cpu((__force __le64)(x)) :     \
 61                                  (x))
 62 # define __mem_ioswabq(a, x)    (x)
 63 
 64 #endif /* __ASM_MACH_GENERIC_MANGLE_PORT_H */
 65 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php