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