]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/Source/TianoTools/Common/Crc32.c
Changed spelling to manifest
[mirror_edk2.git] / Tools / Source / TianoTools / Common / Crc32.c
CommitLineData
878ddf1f 1/*++\r
2\r
3Copyright (c) 2004, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 crc32.c\r
15\r
16Abstract:\r
17\r
18 CalcuateCrc32 routine.\r
19 \r
20--*/\r
21\r
22#include <stdlib.h>\r
23#include "Crc32.h"\r
24\r
25UINT32 mCrcTable[256] = {\r
26 0x00000000,\r
27 0x77073096,\r
28 0xEE0E612C,\r
29 0x990951BA,\r
30 0x076DC419,\r
31 0x706AF48F,\r
32 0xE963A535,\r
33 0x9E6495A3,\r
34 0x0EDB8832,\r
35 0x79DCB8A4,\r
36 0xE0D5E91E,\r
37 0x97D2D988,\r
38 0x09B64C2B,\r
39 0x7EB17CBD,\r
40 0xE7B82D07,\r
41 0x90BF1D91,\r
42 0x1DB71064,\r
43 0x6AB020F2,\r
44 0xF3B97148,\r
45 0x84BE41DE,\r
46 0x1ADAD47D,\r
47 0x6DDDE4EB,\r
48 0xF4D4B551,\r
49 0x83D385C7,\r
50 0x136C9856,\r
51 0x646BA8C0,\r
52 0xFD62F97A,\r
53 0x8A65C9EC,\r
54 0x14015C4F,\r
55 0x63066CD9,\r
56 0xFA0F3D63,\r
57 0x8D080DF5,\r
58 0x3B6E20C8,\r
59 0x4C69105E,\r
60 0xD56041E4,\r
61 0xA2677172,\r
62 0x3C03E4D1,\r
63 0x4B04D447,\r
64 0xD20D85FD,\r
65 0xA50AB56B,\r
66 0x35B5A8FA,\r
67 0x42B2986C,\r
68 0xDBBBC9D6,\r
69 0xACBCF940,\r
70 0x32D86CE3,\r
71 0x45DF5C75,\r
72 0xDCD60DCF,\r
73 0xABD13D59,\r
74 0x26D930AC,\r
75 0x51DE003A,\r
76 0xC8D75180,\r
77 0xBFD06116,\r
78 0x21B4F4B5,\r
79 0x56B3C423,\r
80 0xCFBA9599,\r
81 0xB8BDA50F,\r
82 0x2802B89E,\r
83 0x5F058808,\r
84 0xC60CD9B2,\r
85 0xB10BE924,\r
86 0x2F6F7C87,\r
87 0x58684C11,\r
88 0xC1611DAB,\r
89 0xB6662D3D,\r
90 0x76DC4190,\r
91 0x01DB7106,\r
92 0x98D220BC,\r
93 0xEFD5102A,\r
94 0x71B18589,\r
95 0x06B6B51F,\r
96 0x9FBFE4A5,\r
97 0xE8B8D433,\r
98 0x7807C9A2,\r
99 0x0F00F934,\r
100 0x9609A88E,\r
101 0xE10E9818,\r
102 0x7F6A0DBB,\r
103 0x086D3D2D,\r
104 0x91646C97,\r
105 0xE6635C01,\r
106 0x6B6B51F4,\r
107 0x1C6C6162,\r
108 0x856530D8,\r
109 0xF262004E,\r
110 0x6C0695ED,\r
111 0x1B01A57B,\r
112 0x8208F4C1,\r
113 0xF50FC457,\r
114 0x65B0D9C6,\r
115 0x12B7E950,\r
116 0x8BBEB8EA,\r
117 0xFCB9887C,\r
118 0x62DD1DDF,\r
119 0x15DA2D49,\r
120 0x8CD37CF3,\r
121 0xFBD44C65,\r
122 0x4DB26158,\r
123 0x3AB551CE,\r
124 0xA3BC0074,\r
125 0xD4BB30E2,\r
126 0x4ADFA541,\r
127 0x3DD895D7,\r
128 0xA4D1C46D,\r
129 0xD3D6F4FB,\r
130 0x4369E96A,\r
131 0x346ED9FC,\r
132 0xAD678846,\r
133 0xDA60B8D0,\r
134 0x44042D73,\r
135 0x33031DE5,\r
136 0xAA0A4C5F,\r
137 0xDD0D7CC9,\r
138 0x5005713C,\r
139 0x270241AA,\r
140 0xBE0B1010,\r
141 0xC90C2086,\r
142 0x5768B525,\r
143 0x206F85B3,\r
144 0xB966D409,\r
145 0xCE61E49F,\r
146 0x5EDEF90E,\r
147 0x29D9C998,\r
148 0xB0D09822,\r
149 0xC7D7A8B4,\r
150 0x59B33D17,\r
151 0x2EB40D81,\r
152 0xB7BD5C3B,\r
153 0xC0BA6CAD,\r
154 0xEDB88320,\r
155 0x9ABFB3B6,\r
156 0x03B6E20C,\r
157 0x74B1D29A,\r
158 0xEAD54739,\r
159 0x9DD277AF,\r
160 0x04DB2615,\r
161 0x73DC1683,\r
162 0xE3630B12,\r
163 0x94643B84,\r
164 0x0D6D6A3E,\r
165 0x7A6A5AA8,\r
166 0xE40ECF0B,\r
167 0x9309FF9D,\r
168 0x0A00AE27,\r
169 0x7D079EB1,\r
170 0xF00F9344,\r
171 0x8708A3D2,\r
172 0x1E01F268,\r
173 0x6906C2FE,\r
174 0xF762575D,\r
175 0x806567CB,\r
176 0x196C3671,\r
177 0x6E6B06E7,\r
178 0xFED41B76,\r
179 0x89D32BE0,\r
180 0x10DA7A5A,\r
181 0x67DD4ACC,\r
182 0xF9B9DF6F,\r
183 0x8EBEEFF9,\r
184 0x17B7BE43,\r
185 0x60B08ED5,\r
186 0xD6D6A3E8,\r
187 0xA1D1937E,\r
188 0x38D8C2C4,\r
189 0x4FDFF252,\r
190 0xD1BB67F1,\r
191 0xA6BC5767,\r
192 0x3FB506DD,\r
193 0x48B2364B,\r
194 0xD80D2BDA,\r
195 0xAF0A1B4C,\r
196 0x36034AF6,\r
197 0x41047A60,\r
198 0xDF60EFC3,\r
199 0xA867DF55,\r
200 0x316E8EEF,\r
201 0x4669BE79,\r
202 0xCB61B38C,\r
203 0xBC66831A,\r
204 0x256FD2A0,\r
205 0x5268E236,\r
206 0xCC0C7795,\r
207 0xBB0B4703,\r
208 0x220216B9,\r
209 0x5505262F,\r
210 0xC5BA3BBE,\r
211 0xB2BD0B28,\r
212 0x2BB45A92,\r
213 0x5CB36A04,\r
214 0xC2D7FFA7,\r
215 0xB5D0CF31,\r
216 0x2CD99E8B,\r
217 0x5BDEAE1D,\r
218 0x9B64C2B0,\r
219 0xEC63F226,\r
220 0x756AA39C,\r
221 0x026D930A,\r
222 0x9C0906A9,\r
223 0xEB0E363F,\r
224 0x72076785,\r
225 0x05005713,\r
226 0x95BF4A82,\r
227 0xE2B87A14,\r
228 0x7BB12BAE,\r
229 0x0CB61B38,\r
230 0x92D28E9B,\r
231 0xE5D5BE0D,\r
232 0x7CDCEFB7,\r
233 0x0BDBDF21,\r
234 0x86D3D2D4,\r
235 0xF1D4E242,\r
236 0x68DDB3F8,\r
237 0x1FDA836E,\r
238 0x81BE16CD,\r
239 0xF6B9265B,\r
240 0x6FB077E1,\r
241 0x18B74777,\r
242 0x88085AE6,\r
243 0xFF0F6A70,\r
244 0x66063BCA,\r
245 0x11010B5C,\r
246 0x8F659EFF,\r
247 0xF862AE69,\r
248 0x616BFFD3,\r
249 0x166CCF45,\r
250 0xA00AE278,\r
251 0xD70DD2EE,\r
252 0x4E048354,\r
253 0x3903B3C2,\r
254 0xA7672661,\r
255 0xD06016F7,\r
256 0x4969474D,\r
257 0x3E6E77DB,\r
258 0xAED16A4A,\r
259 0xD9D65ADC,\r
260 0x40DF0B66,\r
261 0x37D83BF0,\r
262 0xA9BCAE53,\r
263 0xDEBB9EC5,\r
264 0x47B2CF7F,\r
265 0x30B5FFE9,\r
266 0xBDBDF21C,\r
267 0xCABAC28A,\r
268 0x53B39330,\r
269 0x24B4A3A6,\r
270 0xBAD03605,\r
271 0xCDD70693,\r
272 0x54DE5729,\r
273 0x23D967BF,\r
274 0xB3667A2E,\r
275 0xC4614AB8,\r
276 0x5D681B02,\r
277 0x2A6F2B94,\r
278 0xB40BBE37,\r
279 0xC30C8EA1,\r
280 0x5A05DF1B,\r
281 0x2D02EF8D\r
282};\r
283\r
284EFI_STATUS\r
285CalculateCrc32 (\r
286 IN UINT8 *Data,\r
287 IN UINTN DataSize,\r
288 IN OUT UINT32 *CrcOut\r
289 )\r
290/*++\r
291\r
292Routine Description:\r
293\r
294 The CalculateCrc32 routine.\r
295\r
296Arguments:\r
297\r
298 Data - The buffer contaning the data to be processed\r
299 DataSize - The size of data to be processed\r
300 CrcOut - A pointer to the caller allocated UINT32 that on\r
301 contains the CRC32 checksum of Data\r
302\r
303Returns:\r
304\r
305 EFI_SUCCESS - Calculation is successful.\r
306 EFI_INVALID_PARAMETER - Data / CrcOut = NULL, or DataSize = 0\r
307\r
308--*/\r
309{\r
310 UINT32 Crc;\r
311 UINTN Index;\r
312 UINT8 *Ptr;\r
313\r
314 if ((DataSize == 0) || (Data == NULL) || (CrcOut == NULL)) {\r
315 return EFI_INVALID_PARAMETER;\r
316 }\r
317\r
318 Crc = 0xffffffff;\r
319 for (Index = 0, Ptr = Data; Index < DataSize; Index++, Ptr++) {\r
320 Crc = (Crc >> 8) ^ mCrcTable[(UINT8) Crc ^ *Ptr];\r
321 }\r
322\r
323 *CrcOut = Crc ^ 0xffffffff;\r
324\r
325 return EFI_SUCCESS;\r
326}\r