Version:  2.0.40 2.2.26 2.4.37 3.13 3.14 3.15 3.16 3.17 3.18 3.19 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10

Linux/lib/crc32defs.h

  1 /*
  2  * There are multiple 16-bit CRC polynomials in common use, but this is
  3  * *the* standard CRC-32 polynomial, first popularized by Ethernet.
  4  * x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x^1+x^0
  5  */
  6 #define CRCPOLY_LE 0xedb88320
  7 #define CRCPOLY_BE 0x04c11db7
  8 
  9 /*
 10  * This is the CRC32c polynomial, as outlined by Castagnoli.
 11  * x^32+x^28+x^27+x^26+x^25+x^23+x^22+x^20+x^19+x^18+x^14+x^13+x^11+x^10+x^9+
 12  * x^8+x^6+x^0
 13  */
 14 #define CRC32C_POLY_LE 0x82F63B78
 15 
 16 /* Try to choose an implementation variant via Kconfig */
 17 #ifdef CONFIG_CRC32_SLICEBY8
 18 # define CRC_LE_BITS 64
 19 # define CRC_BE_BITS 64
 20 #endif
 21 #ifdef CONFIG_CRC32_SLICEBY4
 22 # define CRC_LE_BITS 32
 23 # define CRC_BE_BITS 32
 24 #endif
 25 #ifdef CONFIG_CRC32_SARWATE
 26 # define CRC_LE_BITS 8
 27 # define CRC_BE_BITS 8
 28 #endif
 29 #ifdef CONFIG_CRC32_BIT
 30 # define CRC_LE_BITS 1
 31 # define CRC_BE_BITS 1
 32 #endif
 33 
 34 /*
 35  * How many bits at a time to use.  Valid values are 1, 2, 4, 8, 32 and 64.
 36  * For less performance-sensitive, use 4 or 8 to save table size.
 37  * For larger systems choose same as CPU architecture as default.
 38  * This works well on X86_64, SPARC64 systems. This may require some
 39  * elaboration after experiments with other architectures.
 40  */
 41 #ifndef CRC_LE_BITS
 42 #  ifdef CONFIG_64BIT
 43 #  define CRC_LE_BITS 64
 44 #  else
 45 #  define CRC_LE_BITS 32
 46 #  endif
 47 #endif
 48 #ifndef CRC_BE_BITS
 49 #  ifdef CONFIG_64BIT
 50 #  define CRC_BE_BITS 64
 51 #  else
 52 #  define CRC_BE_BITS 32
 53 #  endif
 54 #endif
 55 
 56 /*
 57  * Little-endian CRC computation.  Used with serial bit streams sent
 58  * lsbit-first.  Be sure to use cpu_to_le32() to append the computed CRC.
 59  */
 60 #if CRC_LE_BITS > 64 || CRC_LE_BITS < 1 || CRC_LE_BITS == 16 || \
 61         CRC_LE_BITS & CRC_LE_BITS-1
 62 # error "CRC_LE_BITS must be one of {1, 2, 4, 8, 32, 64}"
 63 #endif
 64 
 65 /*
 66  * Big-endian CRC computation.  Used with serial bit streams sent
 67  * msbit-first.  Be sure to use cpu_to_be32() to append the computed CRC.
 68  */
 69 #if CRC_BE_BITS > 64 || CRC_BE_BITS < 1 || CRC_BE_BITS == 16 || \
 70         CRC_BE_BITS & CRC_BE_BITS-1
 71 # error "CRC_BE_BITS must be one of {1, 2, 4, 8, 32, 64}"
 72 #endif
 73 

This page was automatically generated by LXR 0.3.1 (source).  •  Linux is a registered trademark of Linus Torvalds  •  Contact us