diff options
Diffstat (limited to 'lib/crc32.c')
| -rw-r--r-- | lib/crc32.c | 21 | 
1 files changed, 11 insertions, 10 deletions
diff --git a/lib/crc32.c b/lib/crc32.c index a6e633a48ce..4b35d2b4437 100644 --- a/lib/crc32.c +++ b/lib/crc32.c @@ -51,20 +51,21 @@ static inline u32  crc32_body(u32 crc, unsigned char const *buf, size_t len, const u32 (*tab)[256])  {  # ifdef __LITTLE_ENDIAN -#  define DO_CRC(x) crc = tab[0][(crc ^ (x)) & 255] ^ (crc >> 8) -#  define DO_CRC4 crc = tab[3][(crc) & 255] ^ \ -		tab[2][(crc >> 8) & 255] ^ \ -		tab[1][(crc >> 16) & 255] ^ \ -		tab[0][(crc >> 24) & 255] +#  define DO_CRC(x) crc = t0[(crc ^ (x)) & 255] ^ (crc >> 8) +#  define DO_CRC4 crc = t3[(crc) & 255] ^ \ +		t2[(crc >> 8) & 255] ^ \ +		t1[(crc >> 16) & 255] ^ \ +		t0[(crc >> 24) & 255]  # else -#  define DO_CRC(x) crc = tab[0][((crc >> 24) ^ (x)) & 255] ^ (crc << 8) -#  define DO_CRC4 crc = tab[0][(crc) & 255] ^ \ -		tab[1][(crc >> 8) & 255] ^ \ -		tab[2][(crc >> 16) & 255] ^ \ -		tab[3][(crc >> 24) & 255] +#  define DO_CRC(x) crc = t0[((crc >> 24) ^ (x)) & 255] ^ (crc << 8) +#  define DO_CRC4 crc = t0[(crc) & 255] ^ \ +		t1[(crc >> 8) & 255] ^  \ +		t2[(crc >> 16) & 255] ^	\ +		t3[(crc >> 24) & 255]  # endif  	const u32 *b;  	size_t    rem_len; +	const u32 *t0=tab[0], *t1=tab[1], *t2=tab[2], *t3=tab[3];  	/* Align it */  	if (unlikely((long)buf & 3 && len)) {  | 
