annotate stashaway/mkcrc32tab.c @ 923:10b4bed10192

gsm-fw/L1: fix for the DSP patch corruption bug The L1 code we got from the LoCosto fw contains a feature for DSP CPU load measurement. This feature is a LoCosto-ism, i.e., not applicable to earlier DBB chips (Calypso) with their respective earlier DSP ROMs. Most of the code dealing with that feature is conditionalized as #if (DSP >= 38), but one spot was missed, and the MCU code was writing into an API word dealing with this feature. In TCS211 this DSP API word happens to be used by the DSP code patch, hence that write was corrupting the patched DSP code.
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Mon, 19 Oct 2015 17:13:56 +0000
parents 8fbd52a639a5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }