FreeCalypso > hg > freecalypso-sw
annotate stashaway/mkcrc32tab.c @ 330:1171c32a637b
rvinterf & rvtdump: do setlinebuf() on the log file before emitting
the header line, to avoid getting this line twice when forking for -b
| author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> | 
|---|---|
| date | Tue, 22 Apr 2014 03:39:15 +0000 | 
| parents | 8fbd52a639a5 | 
| children | 
| rev | line source | 
|---|---|
| 
33
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
2 * This program generates the CRC-32 table for the LSB-first direction. | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
3 * Derived from the MSB-first version written years earlier by the | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
4 * same author (Michael Spacefalcon) for SDSL/ATM AAL5. | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
5 */ | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
6 | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
7 #include <sys/types.h> | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
8 #include <stdio.h> | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
9 | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
10 u_long table[256]; | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
11 | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
12 main(argc, argv) | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
13 char **argv; | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
14 { | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
15 build_table(); | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
16 emit_table(); | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
17 exit(0); | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
18 } | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
19 | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
20 u_long | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
21 crc_byte(crc, inb) | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
22 u_long crc; | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
23 int inb; | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
24 { | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
25 register int bit; | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
26 | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
27 crc ^= inb & 0xFF; | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
28 for (bit = 0; bit < 8; bit++) { | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
29 if (crc & 1) | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
30 crc = (crc >> 1) ^ 0xEDB88320; | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
31 else | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
32 crc >>= 1; | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
33 } | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
34 return(crc); | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
35 } | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
36 | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
37 build_table() | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
38 { | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
39 int i; | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
40 | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
41 for (i = 0; i < 256; i++) | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
42 table[i] = crc_byte(0, i); | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
43 } | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
44 | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
45 emit_table() | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
46 { | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
47 int i, j, idx; | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
48 | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
49 printf("unsigned long crc32_table[256] = {\n"); | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
50 for (i = 0, idx = 0; i < 64; i++) { | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
51 putchar('\t'); | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
52 for (j = 0; j < 4; j++, idx++) | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
53 printf("0x%08X,%c", table[idx], j==3 ? '\n' : ' '); | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
54 } | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
55 printf("};\n"); | 
| 
 
8fbd52a639a5
CRC-32 table, will be used for flash dump integrity checks
 
Michael Spacefalcon <msokolov@ivan.Harhan.ORG> 
parents:  
diff
changeset
 | 
56 } | 
