2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-11-19 08:05:27 +08:00

crc32: some minor cleanups

Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Joakim Tjernlund 2010-03-05 13:43:55 -08:00 committed by Linus Torvalds
parent 5e79d96eed
commit 4f2a9463d1

View File

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