comparison stashaway/mkcrc32tab.c @ 33:8fbd52a639a5

CRC-32 table, will be used for flash dump integrity checks
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sat, 04 May 2013 08:33:26 +0000
parents
children
comparison
equal deleted inserted replaced
32:9a77b3395747 33:8fbd52a639a5
1 /*
2 * This program generates the CRC-32 table for the LSB-first direction.
3 * Derived from the MSB-first version written years earlier by the
4 * same author (Michael Spacefalcon) for SDSL/ATM AAL5.
5 */
6
7 #include <sys/types.h>
8 #include <stdio.h>
9
10 u_long table[256];
11
12 main(argc, argv)
13 char **argv;
14 {
15 build_table();
16 emit_table();
17 exit(0);
18 }
19
20 u_long
21 crc_byte(crc, inb)
22 u_long crc;
23 int inb;
24 {
25 register int bit;
26
27 crc ^= inb & 0xFF;
28 for (bit = 0; bit < 8; bit++) {
29 if (crc & 1)
30 crc = (crc >> 1) ^ 0xEDB88320;
31 else
32 crc >>= 1;
33 }
34 return(crc);
35 }
36
37 build_table()
38 {
39 int i;
40
41 for (i = 0; i < 256; i++)
42 table[i] = crc_byte(0, i);
43 }
44
45 emit_table()
46 {
47 int i, j, idx;
48
49 printf("unsigned long crc32_table[256] = {\n");
50 for (i = 0, idx = 0; i < 64; i++) {
51 putchar('\t');
52 for (j = 0; j < 4; j++, idx++)
53 printf("0x%08X,%c", table[idx], j==3 ? '\n' : ' ');
54 }
55 printf("};\n");
56 }