diff options
author | Eric Biggers <ebiggers@kernel.org> | 2025-06-07 13:04:43 -0700 |
---|---|---|
committer | Eric Biggers <ebiggers@kernel.org> | 2025-06-30 09:31:57 -0700 |
commit | 89a51591405e09a862b9ca1ccfa880986c495c3c (patch) | |
tree | 74f7ee464cc8d7e5022d5272bc7c24020d5b79d0 /lib/gen_crc64table.c | |
parent | f2703a104e89077e622e2f34ac686262c5180d71 (diff) |
lib/crc: Move files into lib/crc/
Move all CRC files in lib/ into a subdirectory lib/crc/ to keep them
from cluttering up the main lib/ directory.
Reviewed-by: "Martin K. Petersen" <martin.petersen@oracle.com>
Acked-by: Ingo Molnar <mingo@kernel.org>
Acked-by: "Jason A. Donenfeld" <Jason@zx2c4.com>
Link: https://lore.kernel.org/r/20250607200454.73587-2-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
Diffstat (limited to 'lib/gen_crc64table.c')
-rw-r--r-- | lib/gen_crc64table.c | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/lib/gen_crc64table.c b/lib/gen_crc64table.c deleted file mode 100644 index e05a4230a0a0..000000000000 --- a/lib/gen_crc64table.c +++ /dev/null @@ -1,95 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * Generate lookup table for the table-driven CRC64 calculation. - * - * gen_crc64table is executed in kernel build time and generates - * lib/crc64table.h. This header is included by lib/crc64.c for - * the table-driven CRC64 calculation. - * - * See lib/crc64.c for more information about which specification - * and polynomial arithmetic that gen_crc64table.c follows to - * generate the lookup table. - * - * Copyright 2018 SUSE Linux. - * Author: Coly Li <colyli@suse.de> - */ -#include <inttypes.h> -#include <stdio.h> - -#define CRC64_ECMA182_POLY 0x42F0E1EBA9EA3693ULL -#define CRC64_NVME_POLY 0x9A6C9329AC4BC9B5ULL - -static uint64_t crc64_table[256] = {0}; -static uint64_t crc64_nvme_table[256] = {0}; - -static void generate_reflected_crc64_table(uint64_t table[256], uint64_t poly) -{ - uint64_t i, j, c, crc; - - for (i = 0; i < 256; i++) { - crc = 0ULL; - c = i; - - for (j = 0; j < 8; j++) { - if ((crc ^ (c >> j)) & 1) - crc = (crc >> 1) ^ poly; - else - crc >>= 1; - } - table[i] = crc; - } -} - -static void generate_crc64_table(uint64_t table[256], uint64_t poly) -{ - uint64_t i, j, c, crc; - - for (i = 0; i < 256; i++) { - crc = 0; - c = i << 56; - - for (j = 0; j < 8; j++) { - if ((crc ^ c) & 0x8000000000000000ULL) - crc = (crc << 1) ^ poly; - else - crc <<= 1; - c <<= 1; - } - - table[i] = crc; - } -} - -static void output_table(uint64_t table[256]) -{ - int i; - - for (i = 0; i < 256; i++) { - printf("\t0x%016" PRIx64 "ULL", table[i]); - if (i & 0x1) - printf(",\n"); - else - printf(", "); - } - printf("};\n"); -} - -static void print_crc64_tables(void) -{ - printf("/* this file is generated - do not edit */\n\n"); - printf("#include <linux/types.h>\n"); - printf("#include <linux/cache.h>\n\n"); - printf("static const u64 ____cacheline_aligned crc64table[256] = {\n"); - output_table(crc64_table); - - printf("\nstatic const u64 ____cacheline_aligned crc64nvmetable[256] = {\n"); - output_table(crc64_nvme_table); -} - -int main(int argc, char *argv[]) -{ - generate_crc64_table(crc64_table, CRC64_ECMA182_POLY); - generate_reflected_crc64_table(crc64_nvme_table, CRC64_NVME_POLY); - print_crc64_tables(); - return 0; -} |