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:
parent
5e79d96eed
commit
4f2a9463d1
30
lib/crc32.c
30
lib/crc32.c
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user