]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - gdb/rdi-share/crc.h
Initial creation of sourceware repository
[thirdparty/binutils-gdb.git] / gdb / rdi-share / crc.h
1 /*
2 * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved.
3 *
4 * This software may be freely used, copied, modified, and distributed
5 * provided that the above copyright notice is preserved in all copies of the
6 * software.
7 */
8
9 /* -*-C-*-
10 *
11 * $Revision$
12 * $Date$
13 *
14 *
15 * crc.h - describes some "standard" CRC calculation routines.
16 */
17 #ifndef angel_crc_h
18 #define angel_crc_h
19
20 /*
21 * manifests
22 */
23
24 /*
25 * When using "crc32" or "crc16" these initial CRC values must be given to
26 * the respective function the first time it is called. The function can
27 * then be called with the return value from the last call of the function
28 * to generate a running CRC over multiple data blocks.
29 * When the last data block has been processed using the "crc32" algorithm
30 * the CRC value should be inverted to produce the final CRC value:
31 * e.g. CRC = ~CRC
32 */
33
34 #define startCRC32 (0xFFFFFFFF) /* CRC initialised to all 1s */
35 #define startCRC16 (0x0000) /* CRC initialised to all 0s */
36
37 /*
38 * For the CRC-32 residual to be calculated correctly requires that the CRC
39 * value is in memory little-endian due to the byte read, bit-ordering
40 * nature of the algorithm.
41 */
42 #define CRC32residual (0xDEBB20E3) /* good CRC-32 residual */
43
44
45 /**********************************************************************/
46
47 /*
48 * exported functions
49 */
50
51 /*
52 * Function: crc32
53 * Purpose: Provides a table driven implementation of the IEEE-802.3
54 * 32-bit CRC algorithm for byte data.
55 *
56 * Params:
57 * Input: address pointer to the byte data
58 * size number of bytes of data to be processed
59 * crc initial CRC value to be used (can be the output
60 * from a previous call to this function).
61 * Returns:
62 * OK: 32-bit CRC value for the specified data
63 */
64 extern unsigned int crc32(unsigned char *address, unsigned int size,
65 unsigned int crc);
66
67 /**********************************************************************/
68
69 /*
70 *
71 * Function: crc16
72 * Purpose: Generates a table driven 16-bit CRC-CCITT for byte data
73 *
74 * Params:
75 * Input: address pointer to the byte data
76 * size number of bytes of data to be processed
77 * crc initial CRC value to be used (can be the output
78 * from a previous call to this function).
79 *
80 * Returns:
81 * OK: 16-bit CRC value for the specified data
82 */
83 extern unsigned short crc16(unsigned char *address, unsigned int size,
84 unsigned short crc);
85
86 /**********************************************************************/
87
88 #endif /* !defined(angel_crc_h) */
89
90 /* EOF crc.h */