Loading lib/crc32.c +14 −16 Original line number Diff line number Diff line Loading @@ -31,9 +31,13 @@ #include "crc32defs.h" #if CRC_LE_BITS == 8 # define tole(x) __constant_cpu_to_le32(x) #define tobe(x) __constant_cpu_to_be32(x) #else # define tole(x) (x) #endif #if CRC_BE_BITS == 8 # define tobe(x) __constant_cpu_to_be32(x) #else # define tobe(x) (x) #endif #include "crc32table.h" Loading @@ -52,20 +56,19 @@ crc32_body(u32 crc, unsigned char const *buf, size_t len, const u32 *tab) # else # define DO_CRC(x) crc = tab[((crc >> 24) ^ (x)) & 255] ^ (crc << 8) # endif const u32 *b = (const u32 *)buf; const u32 *b; size_t rem_len; /* Align it */ if (unlikely((long)b & 3 && len)) { u8 *p = (u8 *)b; if (unlikely((long)buf & 3 && len)) { do { DO_CRC(*p++); } while ((--len) && ((long)p)&3); b = (u32 *)p; DO_CRC(*buf++); } while ((--len) && ((long)buf)&3); } rem_len = len & 3; /* load data 32 bits wide, xor data 32 bits wide. */ len = len >> 2; b = (const u32 *)buf; for (--b; len; --len) { crc ^= *++b; /* use pre increment for speed */ DO_CRC(0); Loading @@ -82,6 +85,7 @@ crc32_body(u32 crc, unsigned char const *buf, size_t len, const u32 *tab) } while (--len); } return crc; #undef DO_CRC } #endif /** Loading Loading @@ -119,9 +123,6 @@ u32 __pure crc32_le(u32 crc, unsigned char const *p, size_t len) crc = __cpu_to_le32(crc); crc = crc32_body(crc, p, len, tab); return __le32_to_cpu(crc); #undef ENDIAN_SHIFT #undef DO_CRC # elif CRC_LE_BITS == 4 while (len--) { crc ^= *p++; Loading Loading @@ -179,9 +180,6 @@ u32 __pure crc32_be(u32 crc, unsigned char const *p, size_t len) crc = __cpu_to_be32(crc); crc = crc32_body(crc, p, len, tab); return __be32_to_cpu(crc); #undef ENDIAN_SHIFT #undef DO_CRC # elif CRC_BE_BITS == 4 while (len--) { crc ^= *p++ << 24; Loading Loading
lib/crc32.c +14 −16 Original line number Diff line number Diff line Loading @@ -31,9 +31,13 @@ #include "crc32defs.h" #if CRC_LE_BITS == 8 # define tole(x) __constant_cpu_to_le32(x) #define tobe(x) __constant_cpu_to_be32(x) #else # define tole(x) (x) #endif #if CRC_BE_BITS == 8 # define tobe(x) __constant_cpu_to_be32(x) #else # define tobe(x) (x) #endif #include "crc32table.h" Loading @@ -52,20 +56,19 @@ crc32_body(u32 crc, unsigned char const *buf, size_t len, const u32 *tab) # else # define DO_CRC(x) crc = tab[((crc >> 24) ^ (x)) & 255] ^ (crc << 8) # endif const u32 *b = (const u32 *)buf; const u32 *b; size_t rem_len; /* Align it */ if (unlikely((long)b & 3 && len)) { u8 *p = (u8 *)b; if (unlikely((long)buf & 3 && len)) { do { DO_CRC(*p++); } while ((--len) && ((long)p)&3); b = (u32 *)p; DO_CRC(*buf++); } while ((--len) && ((long)buf)&3); } rem_len = len & 3; /* load data 32 bits wide, xor data 32 bits wide. */ len = len >> 2; b = (const u32 *)buf; for (--b; len; --len) { crc ^= *++b; /* use pre increment for speed */ DO_CRC(0); Loading @@ -82,6 +85,7 @@ crc32_body(u32 crc, unsigned char const *buf, size_t len, const u32 *tab) } while (--len); } return crc; #undef DO_CRC } #endif /** Loading Loading @@ -119,9 +123,6 @@ u32 __pure crc32_le(u32 crc, unsigned char const *p, size_t len) crc = __cpu_to_le32(crc); crc = crc32_body(crc, p, len, tab); return __le32_to_cpu(crc); #undef ENDIAN_SHIFT #undef DO_CRC # elif CRC_LE_BITS == 4 while (len--) { crc ^= *p++; Loading Loading @@ -179,9 +180,6 @@ u32 __pure crc32_be(u32 crc, unsigned char const *p, size_t len) crc = __cpu_to_be32(crc); crc = crc32_body(crc, p, len, tab); return __be32_to_cpu(crc); #undef ENDIAN_SHIFT #undef DO_CRC # elif CRC_BE_BITS == 4 while (len--) { crc ^= *p++ << 24; Loading