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

TOMOYO Linux Cross Reference
Linux/lib/crc32defs.h

Version: ~ [ linux-5.9-rc6 ] ~ [ linux-5.8.10 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.66 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.146 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.198 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.236 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.236 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.85 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ 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.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 
  3 /* Try to choose an implementation variant via Kconfig */
  4 #ifdef CONFIG_CRC32_SLICEBY8
  5 # define CRC_LE_BITS 64
  6 # define CRC_BE_BITS 64
  7 #endif
  8 #ifdef CONFIG_CRC32_SLICEBY4
  9 # define CRC_LE_BITS 32
 10 # define CRC_BE_BITS 32
 11 #endif
 12 #ifdef CONFIG_CRC32_SARWATE
 13 # define CRC_LE_BITS 8
 14 # define CRC_BE_BITS 8
 15 #endif
 16 #ifdef CONFIG_CRC32_BIT
 17 # define CRC_LE_BITS 1
 18 # define CRC_BE_BITS 1
 19 #endif
 20 
 21 /*
 22  * How many bits at a time to use.  Valid values are 1, 2, 4, 8, 32 and 64.
 23  * For less performance-sensitive, use 4 or 8 to save table size.
 24  * For larger systems choose same as CPU architecture as default.
 25  * This works well on X86_64, SPARC64 systems. This may require some
 26  * elaboration after experiments with other architectures.
 27  */
 28 #ifndef CRC_LE_BITS
 29 #  ifdef CONFIG_64BIT
 30 #  define CRC_LE_BITS 64
 31 #  else
 32 #  define CRC_LE_BITS 32
 33 #  endif
 34 #endif
 35 #ifndef CRC_BE_BITS
 36 #  ifdef CONFIG_64BIT
 37 #  define CRC_BE_BITS 64
 38 #  else
 39 #  define CRC_BE_BITS 32
 40 #  endif
 41 #endif
 42 
 43 /*
 44  * Little-endian CRC computation.  Used with serial bit streams sent
 45  * lsbit-first.  Be sure to use cpu_to_le32() to append the computed CRC.
 46  */
 47 #if CRC_LE_BITS > 64 || CRC_LE_BITS < 1 || CRC_LE_BITS == 16 || \
 48         CRC_LE_BITS & CRC_LE_BITS-1
 49 # error "CRC_LE_BITS must be one of {1, 2, 4, 8, 32, 64}"
 50 #endif
 51 
 52 /*
 53  * Big-endian CRC computation.  Used with serial bit streams sent
 54  * msbit-first.  Be sure to use cpu_to_be32() to append the computed CRC.
 55  */
 56 #if CRC_BE_BITS > 64 || CRC_BE_BITS < 1 || CRC_BE_BITS == 16 || \
 57         CRC_BE_BITS & CRC_BE_BITS-1
 58 # error "CRC_BE_BITS must be one of {1, 2, 4, 8, 32, 64}"
 59 #endif
 60 

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

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | 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.

osdn.jp