Commit 1e6b72e6 authored by Eric Biggers's avatar Eric Biggers
Browse files

x86/crc32: update prototype for crc32_pclmul_le_16()



- Change the len parameter from unsigned int to size_t, so that the
  library function which takes a size_t can safely use this code.

- Move the crc parameter to the front, as this is the usual convention.

Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20241202010844.144356-13-ebiggers@kernel.org


Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
parent 64e3586c
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -58,13 +58,13 @@
#define CONSTANT %xmm0

#ifdef __x86_64__
#define BUF     %rdi
#define LEN     %rsi
#define CRC     %edx
#define CRC     %edi
#define BUF     %rsi
#define LEN     %rdx
#else
#define BUF     %eax
#define LEN     %edx
#define CRC     %ecx
#define CRC     %eax
#define BUF     %edx
#define LEN     %ecx
#endif


@@ -72,12 +72,11 @@
.text
/**
 *      Calculate crc32
 *      BUF - buffer (16 bytes aligned)
 *      LEN - sizeof buffer (16 bytes aligned), LEN should be grater than 63
 *      CRC - initial crc32
 *      BUF - buffer (16 bytes aligned)
 *      LEN - sizeof buffer (16 bytes aligned), LEN should be greater than 63
 *      return %eax crc32
 *      uint crc32_pclmul_le_16(unsigned char const *buffer,
 *	                     size_t len, uint crc32)
 *      u32 crc32_pclmul_le_16(u32 crc, const u8 *buffer, size_t len);
 */

SYM_FUNC_START(crc32_pclmul_le_16) /* buffer and buffer size are 16 bytes aligned */
+2 −2
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@
#define SCALE_F			16L	/* size of xmm register */
#define SCALE_F_MASK		(SCALE_F - 1)

u32 crc32_pclmul_le_16(unsigned char const *buffer, size_t len, u32 crc32);
u32 crc32_pclmul_le_16(u32 crc, const u8 *buffer, size_t len);

static u32 __attribute__((pure))
	crc32_pclmul_le(u32 crc, unsigned char const *p, size_t len)
@@ -71,7 +71,7 @@ static u32 __attribute__((pure))
	iremainder = len & SCALE_F_MASK;

	kernel_fpu_begin();
	crc = crc32_pclmul_le_16(p, iquotient, crc);
	crc = crc32_pclmul_le_16(crc, p, iquotient);
	kernel_fpu_end();

	if (iremainder)