Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: BL_CKEcc.cc | |
4 | // Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved. | |
5 | // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES. | |
6 | // | |
7 | // The above named program is free software; you can redistribute it and/or | |
8 | // modify it under the terms of the GNU General Public | |
9 | // License version 2 as published by the Free Software Foundation. | |
10 | // | |
11 | // The above named program is distributed in the hope that it will be | |
12 | // useful, but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 | // General Public License for more details. | |
15 | // | |
16 | // You should have received a copy of the GNU General Public | |
17 | // License along with this work; if not, write to the Free Software | |
18 | // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. | |
19 | // | |
20 | // ========== Copyright Header End ============================================ | |
21 | /************************************************************************ | |
22 | ** | |
23 | ** Copyright (C) 2006, Sun Microsystems, Inc. | |
24 | ** | |
25 | ** Sun considers its source code as an unpublished, proprietary | |
26 | ** trade secret and it is available only under strict license provisions. | |
27 | ** This copyright notice is placed here only to protect Sun in the event | |
28 | ** the source is deemed a published work. Disassembly, decompilation, | |
29 | ** or other means of reducing the object code to human readable form | |
30 | ** is prohibited by the license agreement under which this code is | |
31 | ** provided to the user or company in possession of this copy. | |
32 | ** | |
33 | *************************************************************************/ | |
34 | #include "BL_CKEcc.h" | |
35 | ||
36 | using namespace std; | |
37 | ||
38 | const int BL_CKEccFile::syndrome[1024][2] = | |
39 | { | |
40 | {0,0}, | |
41 | /* 1 */ | |
42 | {0x1101, 0x1011}, {0x2109, 0x9012}, {0x310e, 0xe013}, {0x410d, 0xd014}, | |
43 | {0x510b, 0xb015}, {0x6107, 0x7016}, {0x7106, 0x6017}, {0x810f, 0xf018}, | |
44 | {0x9102, 0x2019}, {0xa10c, 0xc01a}, {0xb105, 0x501b}, {0xc10a, 0xa01c}, | |
45 | {0xd104, 0x401d}, {0xe103, 0x301e}, {0xf108, 0x801f}, {0x1011, 0x1101}, | |
46 | {0x2019, 0x9102}, {0x301e, 0xe103}, {0x401d, 0xd104}, {0x501b, 0xb105}, | |
47 | {0x6017, 0x7106}, {0x7016, 0x6107}, {0x801f, 0xf108}, {0x9012, 0x2109}, | |
48 | {0xa01c, 0xc10a}, {0xb015, 0x510b}, {0xc01a, 0xa10c}, {0xd014, 0x410d}, | |
49 | {0xe013, 0x310e}, {0xf018, 0x810f}, {0x0111, 0x1110}, {0x1110, 0x0111}, | |
50 | /* 2 */ | |
51 | {0x2202, 0x2022}, {0x4201, 0x1024}, {0x620f, 0xf026}, {0x8209, 0x9028}, | |
52 | {0xa205, 0x502a}, {0xc20e, 0xe02c}, {0xe20c, 0xc02e}, {0x320d, 0xd023}, | |
53 | {0x1204, 0x4021}, {0x720b, 0xb027}, {0x520a, 0xa025}, {0xb207, 0x702b}, | |
54 | {0x9208, 0x8029}, {0xf206, 0x602f}, {0xd203, 0x302d}, {0x2022, 0x2202}, | |
55 | {0x4021, 0x1204}, {0x602f, 0xf206}, {0x8029, 0x9208}, {0xa025, 0x520a}, | |
56 | {0xc02e, 0xe20c}, {0xe02c, 0xc20e}, {0x302d, 0xd203}, {0x1024, 0x4201}, | |
57 | {0x702b, 0xb207}, {0x502a, 0xa205}, {0xb027, 0x720b}, {0x9028, 0x8209}, | |
58 | {0xf026, 0x620f}, {0xd023, 0x320d}, {0x0222, 0x2220}, {0x2220, 0x0222}, | |
59 | /* 3 */ | |
60 | {0x3303, 0x3033}, {0x6308, 0x8036}, {0x5301, 0x1035}, {0xc304, 0x403c}, | |
61 | {0xf30e, 0xe03f}, {0xa309, 0x903a}, {0x930a, 0xa039}, {0xb302, 0x203b}, | |
62 | {0x8306, 0x6038}, {0xd307, 0x703d}, {0xe30f, 0xf03e}, {0x730d, 0xd037}, | |
63 | {0x430c, 0xc034}, {0x1305, 0x5031}, {0x230b, 0xb032}, {0x3033, 0x3303}, | |
64 | {0x6038, 0x8306}, {0x5031, 0x1305}, {0xc034, 0x430c}, {0xf03e, 0xe30f}, | |
65 | {0xa039, 0x930a}, {0x903a, 0xa309}, {0xb032, 0x230b}, {0x8036, 0x6308}, | |
66 | {0xd037, 0x730d}, {0xe03f, 0xf30e}, {0x703d, 0xd307}, {0x403c, 0xc304}, | |
67 | {0x1035, 0x5301}, {0x203b, 0xb302}, {0x0333, 0x3330}, {0x3330, 0x0333}, | |
68 | /* 4 */ | |
69 | {0x4404, 0x4044}, {0x8402, 0x2048}, {0xc40d, 0xd04c}, {0x3401, 0x1043}, | |
70 | {0x740a, 0xa047}, {0xb40f, 0xf04b}, {0xf40b, 0xb04f}, {0x6409, 0x9046}, | |
71 | {0x2408, 0x8042}, {0xe405, 0x504e}, {0xa407, 0x704a}, {0x540e, 0xe045}, | |
72 | {0x1403, 0x3041}, {0xd40c, 0xc04d}, {0x9406, 0x6049}, {0x4044, 0x4404}, | |
73 | {0x8042, 0x2408}, {0xc04d, 0xd40c}, {0x3041, 0x1403}, {0x704a, 0xa407}, | |
74 | {0xb04f, 0xf40b}, {0xf04b, 0xb40f}, {0x6049, 0x9406}, {0x2048, 0x8402}, | |
75 | {0xe045, 0x540e}, {0xa047, 0x740a}, {0x504e, 0xe405}, {0x1043, 0x3401}, | |
76 | {0xd04c, 0xc40d}, {0x9046, 0x6409}, {0x0444, 0x4440}, {0x4440, 0x0444}, | |
77 | /* 5 */ | |
78 | {0x5505, 0x5055}, {0xa50b, 0xb05a}, {0xf503, 0x305f}, {0x750c, 0xc057}, | |
79 | {0x2501, 0x1052}, {0xd508, 0x805d}, {0x850d, 0xd058}, {0xe506, 0x605e}, | |
80 | {0xb50a, 0xa05b}, {0x4509, 0x9054}, {0x1502, 0x2051}, {0x9504, 0x4059}, | |
81 | {0xc507, 0x705c}, {0x350f, 0xf053}, {0x650e, 0xe056}, {0x5055, 0x5505}, | |
82 | {0xa05b, 0xb50a}, {0xf053, 0x350f}, {0x705c, 0xc507}, {0x2051, 0x1502}, | |
83 | {0xd058, 0x850d}, {0x805d, 0xd508}, {0xe056, 0x650e}, {0xb05a, 0xa50b}, | |
84 | {0x4059, 0x9504}, {0x1052, 0x2501}, {0x9054, 0x4509}, {0xc057, 0x750c}, | |
85 | {0x305f, 0xf503}, {0x605e, 0xe506}, {0x0555, 0x5550}, {0x5550, 0x0555}, | |
86 | /* 6 */ | |
87 | {0x6606, 0x6066}, {0xc603, 0x306c}, {0xa602, 0x206a}, {0xb608, 0x806b}, | |
88 | {0xd60f, 0xf06d}, {0x7601, 0x1067}, {0x1607, 0x7061}, {0x5604, 0x4065}, | |
89 | {0x360c, 0xc063}, {0x960e, 0xe069}, {0xf60d, 0xd06f}, {0xe609, 0x906e}, | |
90 | {0x860b, 0xb068}, {0x260a, 0xa062}, {0x4605, 0x5064}, {0x6066, 0x6606}, | |
91 | {0xc063, 0x360c}, {0xa062, 0x260a}, {0xb068, 0x860b}, {0xd06f, 0xf60d}, | |
92 | {0x7061, 0x1607}, {0x1067, 0x7601}, {0x5064, 0x4605}, {0x306c, 0xc603}, | |
93 | {0x906e, 0xe609}, {0xf06d, 0xd60f}, {0xe069, 0x960e}, {0x806b, 0xb608}, | |
94 | {0x206a, 0xa602}, {0x4065, 0x5604}, {0x0666, 0x6660}, {0x6660, 0x0666}, | |
95 | /* 7 */ | |
96 | {0x7707, 0x7077}, {0xe70a, 0xa07e}, {0x970c, 0xc079}, {0xf705, 0x507f}, | |
97 | {0x8704, 0x4078}, {0x1706, 0x6071}, {0x6701, 0x1076}, {0xd70b, 0xb07d}, | |
98 | {0xa70e, 0xe07a}, {0x3702, 0x2073}, {0x4708, 0x8074}, {0x2703, 0x3072}, | |
99 | {0x570f, 0xf075}, {0xc709, 0x907c}, {0xb70d, 0xd07b}, {0x7077, 0x7707}, | |
100 | {0xe07a, 0xa70e}, {0x907c, 0xc709}, {0xf075, 0x570f}, {0x8074, 0x4708}, | |
101 | {0x1076, 0x6701}, {0x6071, 0x1706}, {0xd07b, 0xb70d}, {0xa07e, 0xe70a}, | |
102 | {0x3072, 0x2703}, {0x4078, 0x8704}, {0x2073, 0x3702}, {0x507f, 0xf705}, | |
103 | {0xc079, 0x970c}, {0xb07d, 0xd70b}, {0x0777, 0x7770}, {0x7770, 0x0777}, | |
104 | /* 8 */ | |
105 | {0x8808, 0x8088}, {0x3804, 0x4083}, {0xb809, 0x908b}, {0x6802, 0x2086}, | |
106 | {0xe807, 0x708e}, {0x580d, 0xd085}, {0xd805, 0x508d}, {0xc801, 0x108c}, | |
107 | {0x4803, 0x3084}, {0xf80a, 0xa08f}, {0x780e, 0xe087}, {0xa80f, 0xf08a}, | |
108 | {0x2806, 0x6082}, {0x980b, 0xb089}, {0x180c, 0xc081}, {0x8088, 0x8808}, | |
109 | {0x3084, 0x4803}, {0xb089, 0x980b}, {0x6082, 0x2806}, {0xe087, 0x780e}, | |
110 | {0x508d, 0xd805}, {0xd085, 0x580d}, {0xc081, 0x180c}, {0x4083, 0x3804}, | |
111 | {0xf08a, 0xa80f}, {0x708e, 0xe807}, {0xa08f, 0xf80a}, {0x2086, 0x6802}, | |
112 | {0x908b, 0xb809}, {0x108c, 0xc801}, {0x0888, 0x8880}, {0x8880, 0x0888}, | |
113 | /* 9 */ | |
114 | {0x9909, 0x9099}, {0x190d, 0xd091}, {0x8907, 0x7098}, {0x290f, 0xf092}, | |
115 | {0xb90c, 0xc09b}, {0x390a, 0xa093}, {0xa903, 0x309a}, {0x490e, 0xe094}, | |
116 | {0xd901, 0x109d}, {0x5906, 0x6095}, {0xc90b, 0xb09c}, {0x6905, 0x5096}, | |
117 | {0xf902, 0x209f}, {0x7908, 0x8097}, {0xe904, 0x409e}, {0x9099, 0x9909}, | |
118 | {0x109d, 0xd901}, {0x8097, 0x7908}, {0x209f, 0xf902}, {0xb09c, 0xc90b}, | |
119 | {0x309a, 0xa903}, {0xa093, 0x390a}, {0x409e, 0xe904}, {0xd091, 0x190d}, | |
120 | {0x5096, 0x6905}, {0xc09b, 0xb90c}, {0x6095, 0x5906}, {0xf092, 0x290f}, | |
121 | {0x7098, 0x8907}, {0xe094, 0x490e}, {0x0999, 0x9990}, {0x9990, 0x0999}, | |
122 | /* A */ | |
123 | {0xaa0a, 0xa0aa}, {0x7a05, 0x50a7}, {0xda06, 0x60ad}, | |
124 | {0xea0b, 0xb0ae}, {0x4a02, 0x20a4}, {0x9a03, 0x30a9}, | |
125 | {0x3a09, 0x90a3}, {0xfa0c, 0xc0af}, {0x5a07, 0x70a5}, | |
126 | {0x8a01, 0x10a8}, {0x2a04, 0x40a2}, {0x1a08, 0x80a1}, | |
127 | {0xba0e, 0xe0ab}, {0x6a0d, 0xd0a6}, {0xca0f, 0xf0ac}, | |
128 | {0xa0aa, 0xaa0a}, {0x70a5, 0x5a07}, {0xd0a6, 0x6a0d}, | |
129 | {0xe0ab, 0xba0e}, {0x40a2, 0x2a04}, {0x90a3, 0x3a09}, | |
130 | {0x30a9, 0x9a03}, {0xf0ac, 0xca0f}, {0x50a7, 0x7a05}, | |
131 | {0x80a1, 0x1a08}, {0x20a4, 0x4a02}, {0x10a8, 0x8a01}, | |
132 | {0xb0ae, 0xea0b}, {0x60ad, 0xda06}, {0xc0af, 0xfa0c}, | |
133 | {0x0aaa, 0xaaa0}, {0xaaa0, 0x0aaa}, | |
134 | /* B */ | |
135 | {0xbb0b, 0xb0bb}, {0x5b0c, 0xc0b5}, {0xeb08, 0x80be}, | |
136 | {0xab06, 0x60ba}, {0x1b09, 0x90b1}, {0xfb04, 0x40bf}, | |
137 | {0x4b0f, 0xf0b4}, {0x7b03, 0x30b7}, {0xcb05, 0x50bc}, | |
138 | {0x2b0d, 0xd0b2}, {0x9b01, 0x10b9}, {0xdb02, 0x20bd}, | |
139 | {0x6b0a, 0xa0b6}, {0x8b0e, 0xe0b8}, {0x3b07, 0x70b3}, | |
140 | {0xb0bb, 0xbb0b}, {0x50bc, 0xcb05}, {0xe0b8, 0x8b0e}, | |
141 | {0xa0b6, 0x6b0a}, {0x10b9, 0x9b01}, {0xf0b4, 0x4b0f}, | |
142 | {0x40bf, 0xfb04}, {0x70b3, 0x3b07}, {0xc0b5, 0x5b0c}, | |
143 | {0x20bd, 0xdb02}, {0x90b1, 0x1b09}, {0xd0b2, 0x2b0d}, | |
144 | {0x60ba, 0xab06}, {0x80be, 0xeb08}, {0x30b7, 0x7b03}, | |
145 | {0x0bbb, 0xbbb0}, {0xbbb0, 0x0bbb}, | |
146 | /* C */ | |
147 | {0xcc0c, 0xc0cc}, {0xbc06, 0x60cb}, {0x7c04, 0x40c7}, | |
148 | {0x5c03, 0x30c5}, {0x9c0d, 0xd0c9}, {0xec02, 0x20ce}, | |
149 | {0x2c0e, 0xe0c2}, {0xac08, 0x80ca}, {0x6c0b, 0xb0c6}, | |
150 | {0x1c0f, 0xf0c1}, {0xdc09, 0x90cd}, {0xfc01, 0x10cf}, | |
151 | {0x3c05, 0x50c3}, {0x4c07, 0x70c4}, {0x8c0a, 0xa0c8}, | |
152 | {0xc0cc, 0xcc0c}, {0xb0c6, 0x6c0b}, {0x70c4, 0x4c07}, | |
153 | {0x50c3, 0x3c05}, {0x90cd, 0xdc09}, {0xe0c2, 0x2c0e}, | |
154 | {0x20ce, 0xec02}, {0xa0c8, 0x8c0a}, {0x60cb, 0xbc06}, | |
155 | {0x10cf, 0xfc01}, {0xd0c9, 0x9c0d}, {0xf0c1, 0x1c0f}, | |
156 | {0x30c5, 0x5c03}, {0x40c7, 0x7c04}, {0x80ca, 0xac08}, | |
157 | {0x0ccc, 0xccc0}, {0xccc0, 0x0ccc}, | |
158 | /* D */ | |
159 | {0xdd0d, 0xd0dd}, {0x9d0f, 0xf0d9}, {0x4d0a, 0xa0d4}, | |
160 | {0x1d0e, 0xe0d1}, {0xcd06, 0x60dc}, {0x8d05, 0x50d8}, | |
161 | {0x5d08, 0x80d5}, {0x2d07, 0x70d2}, {0xfd09, 0x90df}, | |
162 | {0xbd03, 0x30db}, {0x6d0c, 0xc0d6}, {0x3d0b, 0xb0d3}, | |
163 | {0xed01, 0x10de}, {0xad04, 0x40da}, {0x7d02, 0x20d7}, | |
164 | {0xd0dd, 0xdd0d}, {0x90df, 0xfd09}, {0x40da, 0xad04}, | |
165 | {0x10de, 0xed01}, {0xc0d6, 0x6d0c}, {0x80d5, 0x5d08}, | |
166 | {0x50d8, 0x8d05}, {0x20d7, 0x7d02}, {0xf0d9, 0x9d0f}, | |
167 | {0xb0d3, 0x3d0b}, {0x60dc, 0xcd06}, {0x30db, 0xbd03}, | |
168 | {0xe0d1, 0x1d0e}, {0xa0d4, 0x4d0a}, {0x70d2, 0x2d07}, | |
169 | {0x0ddd, 0xddd0}, {0xddd0, 0x0ddd}, | |
170 | /* E */ | |
171 | {0xee0e, 0xe0ee}, {0xfe07, 0x70ef}, {0x1e0b, 0xb0e1}, | |
172 | {0xde0a, 0xa0ed}, {0x3e08, 0x80e3}, {0x2e0c, 0xc0e2}, | |
173 | {0xce02, 0x20ec}, {0x9e05, 0x50e9}, {0x7e0f, 0xf0e7}, | |
174 | {0x6e04, 0x40e6}, {0x8e03, 0x30e8}, {0x4e06, 0x60e4}, | |
175 | {0xae0d, 0xd0ea}, {0xbe01, 0x10eb}, {0x5e09, 0x90e5}, | |
176 | {0xe0ee, 0xee0e}, {0xf0e7, 0x7e0f}, {0x10eb, 0xbe01}, | |
177 | {0xd0ea, 0xae0d}, {0x30e8, 0x8e03}, {0x20ec, 0xce02}, | |
178 | {0xc0e2, 0x2e0c}, {0x90e5, 0x5e09}, {0x70ef, 0xfe07}, | |
179 | {0x60e4, 0x4e06}, {0x80e3, 0x3e08}, {0x40e6, 0x6e04}, | |
180 | {0xa0ed, 0xde0a}, {0xb0e1, 0x1e0b}, {0x50e9, 0x9e05}, | |
181 | {0x0eee, 0xeee0}, {0xeee0, 0x0eee}, | |
182 | /* F */ | |
183 | {0xff0f, 0xf0ff}, {0xdf0e, 0xe0fd}, {0x2f05, 0x50f2}, | |
184 | {0x9f07, 0x70f9}, {0x6f03, 0x30f6}, {0x4f0b, 0xb0f4}, | |
185 | {0xbf04, 0x40fb}, {0x1f0a, 0xa0f1}, {0xef0d, 0xd0fe}, | |
186 | {0xcf08, 0x80fc}, {0x3f06, 0x60f3}, {0x8f0c, 0xc0f8}, | |
187 | {0x7f09, 0x90f7}, {0x5f02, 0x20f5}, {0xaf01, 0x10fa}, | |
188 | {0xf0ff, 0xff0f}, {0xd0fe, 0xef0d}, {0x20f5, 0x5f02}, | |
189 | {0x90f7, 0x7f09}, {0x60f3, 0x3f06}, {0x40fb, 0xbf04}, | |
190 | {0xb0f4, 0x4f0b}, {0x10fa, 0xaf01}, {0xe0fd, 0xdf0e}, | |
191 | {0xc0f8, 0x8f0c}, {0x30f6, 0x6f03}, {0x80fc, 0xcf08}, | |
192 | {0x70f9, 0x9f07}, {0x50f2, 0x2f05}, {0xa0f1, 0x1f0a}, | |
193 | {0x0fff, 0xfff0}, {0xfff0, 0x0fff}, | |
194 | /* */ | |
195 | {0x0111, 0x1110}, {0x0222, 0x2220}, {0x0333, 0x3330}, | |
196 | {0x0444, 0x4440}, {0x0555, 0x5550}, {0x0666, 0x6660}, | |
197 | {0x0777, 0x7770}, {0x0888, 0x8880}, {0x0999, 0x9990}, | |
198 | {0x0aaa, 0xaaa0}, {0x0bbb, 0xbbb0}, {0x0ccc, 0xccc0}, | |
199 | {0x0ddd, 0xddd0}, {0x0eee, 0xeee0}, {0x0fff, 0xfff0}, | |
200 | {0x0000, 0x0000}, | |
201 | {0x1110, 0x0111}, {0x2220, 0x0222}, {0x3330, 0x0333}, | |
202 | {0x4440, 0x0444}, {0x5550, 0x0555}, {0x6660, 0x0666}, | |
203 | {0x7770, 0x0777}, {0x8880, 0x0888}, {0x9990, 0x0999}, | |
204 | {0xaaa0, 0x0aaa}, {0xbbb0, 0x0bbb}, {0xccc0, 0x0ccc}, | |
205 | {0xddd0, 0x0ddd}, {0xeee0, 0x0eee}, {0xfff0, 0x0fff}, | |
206 | {0x0000, 0x0000}, | |
207 | {0x1011, 0x1101}, {0x2022, 0x2202}, {0x3033, 0x3303}, | |
208 | {0x4044, 0x4404}, {0x5055, 0x5505}, {0x6066, 0x6606}, | |
209 | {0x7077, 0x7707}, {0x8088, 0x8808}, {0x9099, 0x9909}, | |
210 | {0xa0aa, 0xaa0a}, {0xb0bb, 0xbb0b}, {0xc0cc, 0xcc0c}, | |
211 | {0xd0dd, 0xdd0d}, {0xe0ee, 0xee0e}, {0xf0ff, 0xff0f}, | |
212 | {0x0000, 0x0000}, | |
213 | {0x1000, 0x0001}, {0x2000, 0x0002}, {0x3000, 0x0003}, | |
214 | {0x4000, 0x0004}, {0x5000, 0x0005}, {0x6000, 0x0006}, | |
215 | {0x7000, 0x0007}, {0x8000, 0x0008}, {0x9000, 0x0009}, | |
216 | {0xa000, 0x000a}, {0xb000, 0x000b}, {0xc000, 0x000c}, | |
217 | {0xd000, 0x000d}, {0xe000, 0x000e}, {0xf000, 0x000f}, | |
218 | {0x0000, 0x0000}, | |
219 | {0x0100, 0x0010}, {0x0200, 0x0020}, {0x0300, 0x0030}, | |
220 | {0x0400, 0x0040}, {0x0500, 0x0050}, {0x0600, 0x0060}, | |
221 | {0x0700, 0x0070}, {0x0800, 0x0080}, {0x0900, 0x0090}, | |
222 | {0x0a00, 0x00a0}, {0x0b00, 0x00b0}, {0x0c00, 0x00c0}, | |
223 | {0x0d00, 0x00d0}, {0x0e00, 0x00e0}, {0x0f00, 0x00f0}, | |
224 | {0x0000, 0x0000}, | |
225 | {0x0010, 0x0100}, {0x0020, 0x0200}, {0x0030, 0x0300}, | |
226 | {0x0040, 0x0400}, {0x0050, 0x0500}, {0x0060, 0x0600}, | |
227 | {0x0070, 0x0700}, {0x0080, 0x0800}, {0x0090, 0x0900}, | |
228 | {0x00a0, 0x0a00}, {0x00b0, 0x0b00}, {0x00c0, 0x0c00}, | |
229 | {0x00d0, 0x0d00}, {0x00e0, 0x0e00}, {0x00f0, 0x0f00}, | |
230 | {0x0000, 0x0000}, | |
231 | {0x0001, 0x1000}, {0x0002, 0x2000}, {0x0003, 0x3000}, | |
232 | {0x0004, 0x4000}, {0x0005, 0x5000}, {0x0006, 0x6000}, | |
233 | {0x0007, 0x7000}, {0x0008, 0x8000}, {0x0009, 0x9000}, | |
234 | {0x000a, 0xa000}, {0x000b, 0xb000}, {0x000c, 0xc000}, | |
235 | {0x000d, 0xd000}, {0x000e, 0xe000}, {0x000f, 0xf000}, | |
236 | {0x0000, 0x0000}, | |
237 | ||
238 | {0xa854, 0x458a}, {0x0612, 0x2160}, {0x033c, 0xc330}, | |
239 | {0x06be, 0xeb60}, {0x0b06, 0x60b0}, {0x0c7c, 0xc7c0}, | |
240 | {0x0dd3, 0x3dd0}, {0x0dee, 0xeed0}, {0x0faa, 0xaaf0}, | |
241 | {0x12c7, 0x7c21}, {0x13ae, 0xea31}, {0x15ee, 0xee51}, | |
242 | {0x1676, 0x6761}, {0x1688, 0x8861}, {0x180e, 0xe081}, | |
243 | {0x18b4, 0x4b81}, | |
244 | }; | |
245 | ||
246 | const unsigned long long BL_CKEccFile::synd_exp_data [1024][2] = | |
247 | { | |
248 | /* word 0, word 1*/ | |
249 | {0x0000000000000000, 0x0000000000000000}, | |
250 | /* Addr N Addr N+8 */ | |
251 | {0x0000000000000000, 0x0000000000000001}, | |
252 | {0x0000000000000000, 0x0000000000000010}, | |
253 | {0x0000000000000000, 0x0000000000000100}, | |
254 | {0x0000000000000000, 0x0000000000001000}, | |
255 | {0x0000000000000000, 0x0000000000010000}, | |
256 | {0x0000000000000000, 0x0000000000100000}, | |
257 | {0x0000000000000000, 0x0000000001000000}, | |
258 | {0x0000000000000000, 0x0000000010000000}, | |
259 | {0x0000000000000000, 0x0000000100000000}, | |
260 | {0x0000000000000000, 0x0000001000000000}, | |
261 | {0x0000000000000000, 0x0000010000000000}, | |
262 | {0x0000000000000000, 0x0000100000000000}, | |
263 | {0x0000000000000000, 0x0001000000000000}, | |
264 | {0x0000000000000000, 0x0010000000000000}, | |
265 | {0x0000000000000000, 0x0100000000000000}, | |
266 | {0x0000000000000000, 0x1000000000000000}, | |
267 | {0x0000000000000001, 0x0000000000000000}, | |
268 | {0x0000000000000010, 0x0000000000000000}, | |
269 | {0x0000000000000100, 0x0000000000000000}, | |
270 | {0x0000000000001000, 0x0000000000000000}, | |
271 | {0x0000000000010000, 0x0000000000000000}, | |
272 | {0x0000000000100000, 0x0000000000000000}, | |
273 | {0x0000000001000000, 0x0000000000000000}, | |
274 | {0x0000000010000000, 0x0000000000000000}, | |
275 | {0x0000000100000000, 0x0000000000000000}, | |
276 | {0x0000001000000000, 0x0000000000000000}, | |
277 | {0x0000010000000000, 0x0000000000000000}, | |
278 | {0x0000100000000000, 0x0000000000000000}, | |
279 | {0x0001000000000000, 0x0000000000000000}, | |
280 | {0x0010000000000000, 0x0000000000000000}, | |
281 | {0x0100000000000000, 0x0000000000000000}, | |
282 | {0x1000000000000000, 0x0000000000000000}, | |
283 | {0x0000000000000000, 0x0000000000000002}, | |
284 | {0x0000000000000000, 0x0000000000000020}, | |
285 | {0x0000000000000000, 0x0000000000000200}, | |
286 | {0x0000000000000000, 0x0000000000002000}, | |
287 | {0x0000000000000000, 0x0000000000020000}, | |
288 | {0x0000000000000000, 0x0000000000200000}, | |
289 | {0x0000000000000000, 0x0000000002000000}, | |
290 | {0x0000000000000000, 0x0000000020000000}, | |
291 | {0x0000000000000000, 0x0000000200000000}, | |
292 | {0x0000000000000000, 0x0000002000000000}, | |
293 | {0x0000000000000000, 0x0000020000000000}, | |
294 | {0x0000000000000000, 0x0000200000000000}, | |
295 | {0x0000000000000000, 0x0002000000000000}, | |
296 | {0x0000000000000000, 0x0020000000000000}, | |
297 | {0x0000000000000000, 0x0200000000000000}, | |
298 | {0x0000000000000000, 0x2000000000000000}, | |
299 | {0x0000000000000002, 0x0000000000000000}, | |
300 | {0x0000000000000020, 0x0000000000000000}, | |
301 | {0x0000000000000200, 0x0000000000000000}, | |
302 | {0x0000000000002000, 0x0000000000000000}, | |
303 | {0x0000000000020000, 0x0000000000000000}, | |
304 | {0x0000000000200000, 0x0000000000000000}, | |
305 | {0x0000000002000000, 0x0000000000000000}, | |
306 | {0x0000000020000000, 0x0000000000000000}, | |
307 | {0x0000000200000000, 0x0000000000000000}, | |
308 | {0x0000002000000000, 0x0000000000000000}, | |
309 | {0x0000020000000000, 0x0000000000000000}, | |
310 | {0x0000200000000000, 0x0000000000000000}, | |
311 | {0x0002000000000000, 0x0000000000000000}, | |
312 | {0x0020000000000000, 0x0000000000000000}, | |
313 | {0x0200000000000000, 0x0000000000000000}, | |
314 | {0x2000000000000000, 0x0000000000000000}, | |
315 | {0x0000000000000000, 0x0000000000000003}, | |
316 | {0x0000000000000000, 0x0000000000000030}, | |
317 | {0x0000000000000000, 0x0000000000000300}, | |
318 | {0x0000000000000000, 0x0000000000003000}, | |
319 | {0x0000000000000000, 0x0000000000030000}, | |
320 | {0x0000000000000000, 0x0000000000300000}, | |
321 | {0x0000000000000000, 0x0000000003000000}, | |
322 | {0x0000000000000000, 0x0000000030000000}, | |
323 | {0x0000000000000000, 0x0000000300000000}, | |
324 | {0x0000000000000000, 0x0000003000000000}, | |
325 | {0x0000000000000000, 0x0000030000000000}, | |
326 | {0x0000000000000000, 0x0000300000000000}, | |
327 | {0x0000000000000000, 0x0003000000000000}, | |
328 | {0x0000000000000000, 0x0030000000000000}, | |
329 | {0x0000000000000000, 0x0300000000000000}, | |
330 | {0x0000000000000000, 0x3000000000000000}, | |
331 | {0x0000000000000003, 0x0000000000000000}, | |
332 | {0x0000000000000030, 0x0000000000000000}, | |
333 | {0x0000000000000300, 0x0000000000000000}, | |
334 | {0x0000000000003000, 0x0000000000000000}, | |
335 | {0x0000000000030000, 0x0000000000000000}, | |
336 | {0x0000000000300000, 0x0000000000000000}, | |
337 | {0x0000000003000000, 0x0000000000000000}, | |
338 | {0x0000000030000000, 0x0000000000000000}, | |
339 | {0x0000000300000000, 0x0000000000000000}, | |
340 | {0x0000003000000000, 0x0000000000000000}, | |
341 | {0x0000030000000000, 0x0000000000000000}, | |
342 | {0x0000300000000000, 0x0000000000000000}, | |
343 | {0x0003000000000000, 0x0000000000000000}, | |
344 | {0x0030000000000000, 0x0000000000000000}, | |
345 | {0x0300000000000000, 0x0000000000000000}, | |
346 | {0x3000000000000000, 0x0000000000000000}, | |
347 | {0x0000000000000000, 0x0000000000000004}, | |
348 | {0x0000000000000000, 0x0000000000000040}, | |
349 | {0x0000000000000000, 0x0000000000000400}, | |
350 | {0x0000000000000000, 0x0000000000004000}, | |
351 | {0x0000000000000000, 0x0000000000040000}, | |
352 | {0x0000000000000000, 0x0000000000400000}, | |
353 | {0x0000000000000000, 0x0000000004000000}, | |
354 | {0x0000000000000000, 0x0000000040000000}, | |
355 | {0x0000000000000000, 0x0000000400000000}, | |
356 | {0x0000000000000000, 0x0000004000000000}, | |
357 | {0x0000000000000000, 0x0000040000000000}, | |
358 | {0x0000000000000000, 0x0000400000000000}, | |
359 | {0x0000000000000000, 0x0004000000000000}, | |
360 | {0x0000000000000000, 0x0040000000000000}, | |
361 | {0x0000000000000000, 0x0400000000000000}, | |
362 | {0x0000000000000000, 0x4000000000000000}, | |
363 | {0x0000000000000004, 0x0000000000000000}, | |
364 | {0x0000000000000040, 0x0000000000000000}, | |
365 | {0x0000000000000400, 0x0000000000000000}, | |
366 | {0x0000000000004000, 0x0000000000000000}, | |
367 | {0x0000000000040000, 0x0000000000000000}, | |
368 | {0x0000000000400000, 0x0000000000000000}, | |
369 | {0x0000000004000000, 0x0000000000000000}, | |
370 | {0x0000000040000000, 0x0000000000000000}, | |
371 | {0x0000000400000000, 0x0000000000000000}, | |
372 | {0x0000004000000000, 0x0000000000000000}, | |
373 | {0x0000040000000000, 0x0000000000000000}, | |
374 | {0x0000400000000000, 0x0000000000000000}, | |
375 | {0x0004000000000000, 0x0000000000000000}, | |
376 | {0x0040000000000000, 0x0000000000000000}, | |
377 | {0x0400000000000000, 0x0000000000000000}, | |
378 | {0x4000000000000000, 0x0000000000000000}, | |
379 | {0x0000000000000000, 0x0000000000000005}, | |
380 | {0x0000000000000000, 0x0000000000000050}, | |
381 | {0x0000000000000000, 0x0000000000000500}, | |
382 | {0x0000000000000000, 0x0000000000005000}, | |
383 | {0x0000000000000000, 0x0000000000050000}, | |
384 | {0x0000000000000000, 0x0000000000500000}, | |
385 | {0x0000000000000000, 0x0000000005000000}, | |
386 | {0x0000000000000000, 0x0000000050000000}, | |
387 | {0x0000000000000000, 0x0000000500000000}, | |
388 | {0x0000000000000000, 0x0000005000000000}, | |
389 | {0x0000000000000000, 0x0000050000000000}, | |
390 | {0x0000000000000000, 0x0000500000000000}, | |
391 | {0x0000000000000000, 0x0005000000000000}, | |
392 | {0x0000000000000000, 0x0050000000000000}, | |
393 | {0x0000000000000000, 0x0500000000000000}, | |
394 | {0x0000000000000000, 0x5000000000000000}, | |
395 | {0x0000000000000005, 0x0000000000000000}, | |
396 | {0x0000000000000050, 0x0000000000000000}, | |
397 | {0x0000000000000500, 0x0000000000000000}, | |
398 | {0x0000000000005000, 0x0000000000000000}, | |
399 | {0x0000000000050000, 0x0000000000000000}, | |
400 | {0x0000000000500000, 0x0000000000000000}, | |
401 | {0x0000000005000000, 0x0000000000000000}, | |
402 | {0x0000000050000000, 0x0000000000000000}, | |
403 | {0x0000000500000000, 0x0000000000000000}, | |
404 | {0x0000005000000000, 0x0000000000000000}, | |
405 | {0x0000050000000000, 0x0000000000000000}, | |
406 | {0x0000500000000000, 0x0000000000000000}, | |
407 | {0x0005000000000000, 0x0000000000000000}, | |
408 | {0x0050000000000000, 0x0000000000000000}, | |
409 | {0x0500000000000000, 0x0000000000000000}, | |
410 | {0x5000000000000000, 0x0000000000000000}, | |
411 | {0x0000000000000000, 0x0000000000000006}, | |
412 | {0x0000000000000000, 0x0000000000000060}, | |
413 | {0x0000000000000000, 0x0000000000000600}, | |
414 | {0x0000000000000000, 0x0000000000006000}, | |
415 | {0x0000000000000000, 0x0000000000060000}, | |
416 | {0x0000000000000000, 0x0000000000600000}, | |
417 | {0x0000000000000000, 0x0000000006000000}, | |
418 | {0x0000000000000000, 0x0000000060000000}, | |
419 | {0x0000000000000000, 0x0000000600000000}, | |
420 | {0x0000000000000000, 0x0000006000000000}, | |
421 | {0x0000000000000000, 0x0000060000000000}, | |
422 | {0x0000000000000000, 0x0000600000000000}, | |
423 | {0x0000000000000000, 0x0006000000000000}, | |
424 | {0x0000000000000000, 0x0060000000000000}, | |
425 | {0x0000000000000000, 0x0600000000000000}, | |
426 | {0x0000000000000000, 0x6000000000000000}, | |
427 | {0x0000000000000006, 0x0000000000000000}, | |
428 | {0x0000000000000060, 0x0000000000000000}, | |
429 | {0x0000000000000600, 0x0000000000000000}, | |
430 | {0x0000000000006000, 0x0000000000000000}, | |
431 | {0x0000000000060000, 0x0000000000000000}, | |
432 | {0x0000000000600000, 0x0000000000000000}, | |
433 | {0x0000000006000000, 0x0000000000000000}, | |
434 | {0x0000000060000000, 0x0000000000000000}, | |
435 | {0x0000000600000000, 0x0000000000000000}, | |
436 | {0x0000006000000000, 0x0000000000000000}, | |
437 | {0x0000060000000000, 0x0000000000000000}, | |
438 | {0x0000600000000000, 0x0000000000000000}, | |
439 | {0x0006000000000000, 0x0000000000000000}, | |
440 | {0x0060000000000000, 0x0000000000000000}, | |
441 | {0x0600000000000000, 0x0000000000000000}, | |
442 | {0x6000000000000000, 0x0000000000000000}, | |
443 | {0x0000000000000000, 0x0000000000000007}, | |
444 | {0x0000000000000000, 0x0000000000000070}, | |
445 | {0x0000000000000000, 0x0000000000000700}, | |
446 | {0x0000000000000000, 0x0000000000007000}, | |
447 | {0x0000000000000000, 0x0000000000070000}, | |
448 | {0x0000000000000000, 0x0000000000700000}, | |
449 | {0x0000000000000000, 0x0000000007000000}, | |
450 | {0x0000000000000000, 0x0000000070000000}, | |
451 | {0x0000000000000000, 0x0000000700000000}, | |
452 | {0x0000000000000000, 0x0000007000000000}, | |
453 | {0x0000000000000000, 0x0000070000000000}, | |
454 | {0x0000000000000000, 0x0000700000000000}, | |
455 | {0x0000000000000000, 0x0007000000000000}, | |
456 | {0x0000000000000000, 0x0070000000000000}, | |
457 | {0x0000000000000000, 0x0700000000000000}, | |
458 | {0x0000000000000000, 0x7000000000000000}, | |
459 | {0x0000000000000007, 0x0000000000000000}, | |
460 | {0x0000000000000070, 0x0000000000000000}, | |
461 | {0x0000000000000700, 0x0000000000000000}, | |
462 | {0x0000000000007000, 0x0000000000000000}, | |
463 | {0x0000000000070000, 0x0000000000000000}, | |
464 | {0x0000000000700000, 0x0000000000000000}, | |
465 | {0x0000000007000000, 0x0000000000000000}, | |
466 | {0x0000000070000000, 0x0000000000000000}, | |
467 | {0x0000000700000000, 0x0000000000000000}, | |
468 | {0x0000007000000000, 0x0000000000000000}, | |
469 | {0x0000070000000000, 0x0000000000000000}, | |
470 | {0x0000700000000000, 0x0000000000000000}, | |
471 | {0x0007000000000000, 0x0000000000000000}, | |
472 | {0x0070000000000000, 0x0000000000000000}, | |
473 | {0x0700000000000000, 0x0000000000000000}, | |
474 | {0x7000000000000000, 0x0000000000000000}, | |
475 | {0x0000000000000000, 0x0000000000000008}, | |
476 | {0x0000000000000000, 0x0000000000000080}, | |
477 | {0x0000000000000000, 0x0000000000000800}, | |
478 | {0x0000000000000000, 0x0000000000008000}, | |
479 | {0x0000000000000000, 0x0000000000080000}, | |
480 | {0x0000000000000000, 0x0000000000800000}, | |
481 | {0x0000000000000000, 0x0000000008000000}, | |
482 | {0x0000000000000000, 0x0000000080000000}, | |
483 | {0x0000000000000000, 0x0000000800000000}, | |
484 | {0x0000000000000000, 0x0000008000000000}, | |
485 | {0x0000000000000000, 0x0000080000000000}, | |
486 | {0x0000000000000000, 0x0000800000000000}, | |
487 | {0x0000000000000000, 0x0008000000000000}, | |
488 | {0x0000000000000000, 0x0080000000000000}, | |
489 | {0x0000000000000000, 0x0800000000000000}, | |
490 | {0x0000000000000000, 0x8000000000000000}, | |
491 | {0x0000000000000008, 0x0000000000000000}, | |
492 | {0x0000000000000080, 0x0000000000000000}, | |
493 | {0x0000000000000800, 0x0000000000000000}, | |
494 | {0x0000000000008000, 0x0000000000000000}, | |
495 | {0x0000000000080000, 0x0000000000000000}, | |
496 | {0x0000000000800000, 0x0000000000000000}, | |
497 | {0x0000000008000000, 0x0000000000000000}, | |
498 | {0x0000000080000000, 0x0000000000000000}, | |
499 | {0x0000000800000000, 0x0000000000000000}, | |
500 | {0x0000008000000000, 0x0000000000000000}, | |
501 | {0x0000080000000000, 0x0000000000000000}, | |
502 | {0x0000800000000000, 0x0000000000000000}, | |
503 | {0x0008000000000000, 0x0000000000000000}, | |
504 | {0x0080000000000000, 0x0000000000000000}, | |
505 | {0x0800000000000000, 0x0000000000000000}, | |
506 | {0x8000000000000000, 0x0000000000000000}, | |
507 | {0x0000000000000000, 0x0000000000000009}, | |
508 | {0x0000000000000000, 0x0000000000000090}, | |
509 | {0x0000000000000000, 0x0000000000000900}, | |
510 | {0x0000000000000000, 0x0000000000009000}, | |
511 | {0x0000000000000000, 0x0000000000090000}, | |
512 | {0x0000000000000000, 0x0000000000900000}, | |
513 | {0x0000000000000000, 0x0000000009000000}, | |
514 | {0x0000000000000000, 0x0000000090000000}, | |
515 | {0x0000000000000000, 0x0000000900000000}, | |
516 | {0x0000000000000000, 0x0000009000000000}, | |
517 | {0x0000000000000000, 0x0000090000000000}, | |
518 | {0x0000000000000000, 0x0000900000000000}, | |
519 | {0x0000000000000000, 0x0009000000000000}, | |
520 | {0x0000000000000000, 0x0090000000000000}, | |
521 | {0x0000000000000000, 0x0900000000000000}, | |
522 | {0x0000000000000000, 0x9000000000000000}, | |
523 | {0x0000000000000009, 0x0000000000000000}, | |
524 | {0x0000000000000090, 0x0000000000000000}, | |
525 | {0x0000000000000900, 0x0000000000000000}, | |
526 | {0x0000000000009000, 0x0000000000000000}, | |
527 | {0x0000000000090000, 0x0000000000000000}, | |
528 | {0x0000000000900000, 0x0000000000000000}, | |
529 | {0x0000000009000000, 0x0000000000000000}, | |
530 | {0x0000000090000000, 0x0000000000000000}, | |
531 | {0x0000000900000000, 0x0000000000000000}, | |
532 | {0x0000009000000000, 0x0000000000000000}, | |
533 | {0x0000090000000000, 0x0000000000000000}, | |
534 | {0x0000900000000000, 0x0000000000000000}, | |
535 | {0x0009000000000000, 0x0000000000000000}, | |
536 | {0x0090000000000000, 0x0000000000000000}, | |
537 | {0x0900000000000000, 0x0000000000000000}, | |
538 | {0x9000000000000000, 0x0000000000000000}, | |
539 | {0x0000000000000000, 0x000000000000000a}, | |
540 | {0x0000000000000000, 0x00000000000000a0}, | |
541 | {0x0000000000000000, 0x0000000000000a00}, | |
542 | {0x0000000000000000, 0x000000000000a000}, | |
543 | {0x0000000000000000, 0x00000000000a0000}, | |
544 | {0x0000000000000000, 0x0000000000a00000}, | |
545 | {0x0000000000000000, 0x000000000a000000}, | |
546 | {0x0000000000000000, 0x00000000a0000000}, | |
547 | {0x0000000000000000, 0x0000000a00000000}, | |
548 | {0x0000000000000000, 0x000000a000000000}, | |
549 | {0x0000000000000000, 0x00000a0000000000}, | |
550 | {0x0000000000000000, 0x0000a00000000000}, | |
551 | {0x0000000000000000, 0x000a000000000000}, | |
552 | {0x0000000000000000, 0x00a0000000000000}, | |
553 | {0x0000000000000000, 0x0a00000000000000}, | |
554 | {0x0000000000000000, 0xa000000000000000}, | |
555 | {0x000000000000000a, 0x0000000000000000}, | |
556 | {0x00000000000000a0, 0x0000000000000000}, | |
557 | {0x0000000000000a00, 0x0000000000000000}, | |
558 | {0x000000000000a000, 0x0000000000000000}, | |
559 | {0x00000000000a0000, 0x0000000000000000}, | |
560 | {0x0000000000a00000, 0x0000000000000000}, | |
561 | {0x000000000a000000, 0x0000000000000000}, | |
562 | {0x00000000a0000000, 0x0000000000000000}, | |
563 | {0x0000000a00000000, 0x0000000000000000}, | |
564 | {0x000000a000000000, 0x0000000000000000}, | |
565 | {0x00000a0000000000, 0x0000000000000000}, | |
566 | {0x0000a00000000000, 0x0000000000000000}, | |
567 | {0x000a000000000000, 0x0000000000000000}, | |
568 | {0x00a0000000000000, 0x0000000000000000}, | |
569 | {0x0a00000000000000, 0x0000000000000000}, | |
570 | {0xa000000000000000, 0x0000000000000000}, | |
571 | {0x0000000000000000, 0x000000000000000b}, | |
572 | {0x0000000000000000, 0x00000000000000b0}, | |
573 | {0x0000000000000000, 0x0000000000000b00}, | |
574 | {0x0000000000000000, 0x000000000000b000}, | |
575 | {0x0000000000000000, 0x00000000000b0000}, | |
576 | {0x0000000000000000, 0x0000000000b00000}, | |
577 | {0x0000000000000000, 0x000000000b000000}, | |
578 | {0x0000000000000000, 0x00000000b0000000}, | |
579 | {0x0000000000000000, 0x0000000b00000000}, | |
580 | {0x0000000000000000, 0x000000b000000000}, | |
581 | {0x0000000000000000, 0x00000b0000000000}, | |
582 | {0x0000000000000000, 0x0000b00000000000}, | |
583 | {0x0000000000000000, 0x000b000000000000}, | |
584 | {0x0000000000000000, 0x00b0000000000000}, | |
585 | {0x0000000000000000, 0x0b00000000000000}, | |
586 | {0x0000000000000000, 0xb000000000000000}, | |
587 | {0x000000000000000b, 0x0000000000000000}, | |
588 | {0x00000000000000b0, 0x0000000000000000}, | |
589 | {0x0000000000000b00, 0x0000000000000000}, | |
590 | {0x000000000000b000, 0x0000000000000000}, | |
591 | {0x00000000000b0000, 0x0000000000000000}, | |
592 | {0x0000000000b00000, 0x0000000000000000}, | |
593 | {0x000000000b000000, 0x0000000000000000}, | |
594 | {0x00000000b0000000, 0x0000000000000000}, | |
595 | {0x0000000b00000000, 0x0000000000000000}, | |
596 | {0x000000b000000000, 0x0000000000000000}, | |
597 | {0x00000b0000000000, 0x0000000000000000}, | |
598 | {0x0000b00000000000, 0x0000000000000000}, | |
599 | {0x000b000000000000, 0x0000000000000000}, | |
600 | {0x00b0000000000000, 0x0000000000000000}, | |
601 | {0x0b00000000000000, 0x0000000000000000}, | |
602 | {0xb000000000000000, 0x0000000000000000}, | |
603 | {0x0000000000000000, 0x000000000000000c}, | |
604 | {0x0000000000000000, 0x00000000000000c0}, | |
605 | {0x0000000000000000, 0x0000000000000c00}, | |
606 | {0x0000000000000000, 0x000000000000c000}, | |
607 | {0x0000000000000000, 0x00000000000c0000}, | |
608 | {0x0000000000000000, 0x0000000000c00000}, | |
609 | {0x0000000000000000, 0x000000000c000000}, | |
610 | {0x0000000000000000, 0x00000000c0000000}, | |
611 | {0x0000000000000000, 0x0000000c00000000}, | |
612 | {0x0000000000000000, 0x000000c000000000}, | |
613 | {0x0000000000000000, 0x00000c0000000000}, | |
614 | {0x0000000000000000, 0x0000c00000000000}, | |
615 | {0x0000000000000000, 0x000c000000000000}, | |
616 | {0x0000000000000000, 0x00c0000000000000}, | |
617 | {0x0000000000000000, 0x0c00000000000000}, | |
618 | {0x0000000000000000, 0xc000000000000000}, | |
619 | {0x000000000000000c, 0x0000000000000000}, | |
620 | {0x00000000000000c0, 0x0000000000000000}, | |
621 | {0x0000000000000c00, 0x0000000000000000}, | |
622 | {0x000000000000c000, 0x0000000000000000}, | |
623 | {0x00000000000c0000, 0x0000000000000000}, | |
624 | {0x0000000000c00000, 0x0000000000000000}, | |
625 | {0x000000000c000000, 0x0000000000000000}, | |
626 | {0x00000000c0000000, 0x0000000000000000}, | |
627 | {0x0000000c00000000, 0x0000000000000000}, | |
628 | {0x000000c000000000, 0x0000000000000000}, | |
629 | {0x00000c0000000000, 0x0000000000000000}, | |
630 | {0x0000c00000000000, 0x0000000000000000}, | |
631 | {0x000c000000000000, 0x0000000000000000}, | |
632 | {0x00c0000000000000, 0x0000000000000000}, | |
633 | {0x0c00000000000000, 0x0000000000000000}, | |
634 | {0xc000000000000000, 0x0000000000000000}, | |
635 | {0x0000000000000000, 0x000000000000000d}, | |
636 | {0x0000000000000000, 0x00000000000000d0}, | |
637 | {0x0000000000000000, 0x0000000000000d00}, | |
638 | {0x0000000000000000, 0x000000000000d000}, | |
639 | {0x0000000000000000, 0x00000000000d0000}, | |
640 | {0x0000000000000000, 0x0000000000d00000}, | |
641 | {0x0000000000000000, 0x000000000d000000}, | |
642 | {0x0000000000000000, 0x00000000d0000000}, | |
643 | {0x0000000000000000, 0x0000000d00000000}, | |
644 | {0x0000000000000000, 0x000000d000000000}, | |
645 | {0x0000000000000000, 0x00000d0000000000}, | |
646 | {0x0000000000000000, 0x0000d00000000000}, | |
647 | {0x0000000000000000, 0x000d000000000000}, | |
648 | {0x0000000000000000, 0x00d0000000000000}, | |
649 | {0x0000000000000000, 0x0d00000000000000}, | |
650 | {0x0000000000000000, 0xd000000000000000}, | |
651 | {0x000000000000000d, 0x0000000000000000}, | |
652 | {0x00000000000000d0, 0x0000000000000000}, | |
653 | {0x0000000000000d00, 0x0000000000000000}, | |
654 | {0x000000000000d000, 0x0000000000000000}, | |
655 | {0x00000000000d0000, 0x0000000000000000}, | |
656 | {0x0000000000d00000, 0x0000000000000000}, | |
657 | {0x000000000d000000, 0x0000000000000000}, | |
658 | {0x00000000d0000000, 0x0000000000000000}, | |
659 | {0x0000000d00000000, 0x0000000000000000}, | |
660 | {0x000000d000000000, 0x0000000000000000}, | |
661 | {0x00000d0000000000, 0x0000000000000000}, | |
662 | {0x0000d00000000000, 0x0000000000000000}, | |
663 | {0x000d000000000000, 0x0000000000000000}, | |
664 | {0x00d0000000000000, 0x0000000000000000}, | |
665 | {0x0d00000000000000, 0x0000000000000000}, | |
666 | {0xd000000000000000, 0x0000000000000000}, | |
667 | {0x0000000000000000, 0x000000000000000e}, | |
668 | {0x0000000000000000, 0x00000000000000e0}, | |
669 | {0x0000000000000000, 0x0000000000000e00}, | |
670 | {0x0000000000000000, 0x000000000000e000}, | |
671 | {0x0000000000000000, 0x00000000000e0000}, | |
672 | {0x0000000000000000, 0x0000000000e00000}, | |
673 | {0x0000000000000000, 0x000000000e000000}, | |
674 | {0x0000000000000000, 0x00000000e0000000}, | |
675 | {0x0000000000000000, 0x0000000e00000000}, | |
676 | {0x0000000000000000, 0x000000e000000000}, | |
677 | {0x0000000000000000, 0x00000e0000000000}, | |
678 | {0x0000000000000000, 0x0000e00000000000}, | |
679 | {0x0000000000000000, 0x000e000000000000}, | |
680 | {0x0000000000000000, 0x00e0000000000000}, | |
681 | {0x0000000000000000, 0x0e00000000000000}, | |
682 | {0x0000000000000000, 0xe000000000000000}, | |
683 | {0x000000000000000e, 0x0000000000000000}, | |
684 | {0x00000000000000e0, 0x0000000000000000}, | |
685 | {0x0000000000000e00, 0x0000000000000000}, | |
686 | {0x000000000000e000, 0x0000000000000000}, | |
687 | {0x00000000000e0000, 0x0000000000000000}, | |
688 | {0x0000000000e00000, 0x0000000000000000}, | |
689 | {0x000000000e000000, 0x0000000000000000}, | |
690 | {0x00000000e0000000, 0x0000000000000000}, | |
691 | {0x0000000e00000000, 0x0000000000000000}, | |
692 | {0x000000e000000000, 0x0000000000000000}, | |
693 | {0x00000e0000000000, 0x0000000000000000}, | |
694 | {0x0000e00000000000, 0x0000000000000000}, | |
695 | {0x000e000000000000, 0x0000000000000000}, | |
696 | {0x00e0000000000000, 0x0000000000000000}, | |
697 | {0x0e00000000000000, 0x0000000000000000}, | |
698 | {0xe000000000000000, 0x0000000000000000}, | |
699 | {0x0000000000000000, 0x000000000000000f}, | |
700 | {0x0000000000000000, 0x00000000000000f0}, | |
701 | {0x0000000000000000, 0x0000000000000f00}, | |
702 | {0x0000000000000000, 0x000000000000f000}, | |
703 | {0x0000000000000000, 0x00000000000f0000}, | |
704 | {0x0000000000000000, 0x0000000000f00000}, | |
705 | {0x0000000000000000, 0x000000000f000000}, | |
706 | {0x0000000000000000, 0x00000000f0000000}, | |
707 | {0x0000000000000000, 0x0000000f00000000}, | |
708 | {0x0000000000000000, 0x000000f000000000}, | |
709 | {0x0000000000000000, 0x00000f0000000000}, | |
710 | {0x0000000000000000, 0x0000f00000000000}, | |
711 | {0x0000000000000000, 0x000f000000000000}, | |
712 | {0x0000000000000000, 0x00f0000000000000}, | |
713 | {0x0000000000000000, 0x0f00000000000000}, | |
714 | {0x0000000000000000, 0xf000000000000000}, | |
715 | {0x000000000000000f, 0x0000000000000000}, | |
716 | {0x00000000000000f0, 0x0000000000000000}, | |
717 | {0x0000000000000f00, 0x0000000000000000}, | |
718 | {0x000000000000f000, 0x0000000000000000}, | |
719 | {0x00000000000f0000, 0x0000000000000000}, | |
720 | {0x0000000000f00000, 0x0000000000000000}, | |
721 | {0x000000000f000000, 0x0000000000000000}, | |
722 | {0x00000000f0000000, 0x0000000000000000}, | |
723 | {0x0000000f00000000, 0x0000000000000000}, | |
724 | {0x000000f000000000, 0x0000000000000000}, | |
725 | {0x00000f0000000000, 0x0000000000000000}, | |
726 | {0x0000f00000000000, 0x0000000000000000}, | |
727 | {0x000f000000000000, 0x0000000000000000}, | |
728 | {0x00f0000000000000, 0x0000000000000000}, | |
729 | {0x0f00000000000000, 0x0000000000000000}, | |
730 | {0xf000000000000000, 0x0000000000000000}, | |
731 | ||
732 | {0x0100000000000000, 0x0000000000000000}, | |
733 | {0x0200000000000000, 0x0000000000000000}, | |
734 | {0x0300000000000000, 0x0000000000000000}, | |
735 | {0x0400000000000000, 0x0000000000000000}, | |
736 | {0x0500000000000000, 0x0000000000000000}, | |
737 | {0x0600000000000000, 0x0000000000000000}, | |
738 | {0x0700000000000000, 0x0000000000000000}, | |
739 | {0x0800000000000000, 0x0000000000000000}, | |
740 | {0x0900000000000000, 0x0000000000000000}, | |
741 | {0x0a00000000000000, 0x0000000000000000}, | |
742 | {0x0b00000000000000, 0x0000000000000000}, | |
743 | {0x0c00000000000000, 0x0000000000000000}, | |
744 | {0x0d00000000000000, 0x0000000000000000}, | |
745 | {0x0e00000000000000, 0x0000000000000000}, | |
746 | {0x0f00000000000000, 0x0000000000000000}, | |
747 | {0x0000000000000000, 0x0000000000000000}, | |
748 | ||
749 | {0x1000000000000000, 0x0000000000000000}, | |
750 | {0x2000000000000000, 0x0000000000000000}, | |
751 | {0x3000000000000000, 0x0000000000000000}, | |
752 | {0x4000000000000000, 0x0000000000000000}, | |
753 | {0x5000000000000000, 0x0000000000000000}, | |
754 | {0x6000000000000000, 0x0000000000000000}, | |
755 | {0x7000000000000000, 0x0000000000000000}, | |
756 | {0x8000000000000000, 0x0000000000000000}, | |
757 | {0x9000000000000000, 0x0000000000000000}, | |
758 | {0xa000000000000000, 0x0000000000000000}, | |
759 | {0xb000000000000000, 0x0000000000000000}, | |
760 | {0xc000000000000000, 0x0000000000000000}, | |
761 | {0xd000000000000000, 0x0000000000000000}, | |
762 | {0xe000000000000000, 0x0000000000000000}, | |
763 | {0xf000000000000000, 0x0000000000000000}, | |
764 | {0x0000000000000000, 0x0000000000000000}, | |
765 | ||
766 | {0x0000000000000000, 0x1000000000000000}, | |
767 | {0x0000000000000000, 0x2000000000000000}, | |
768 | {0x0000000000000000, 0x3000000000000000}, | |
769 | {0x0000000000000000, 0x4000000000000000}, | |
770 | {0x0000000000000000, 0x5000000000000000}, | |
771 | {0x0000000000000000, 0x6000000000000000}, | |
772 | {0x0000000000000000, 0x7000000000000000}, | |
773 | {0x0000000000000000, 0x8000000000000000}, | |
774 | {0x0000000000000000, 0x9000000000000000}, | |
775 | {0x0000000000000000, 0xa000000000000000}, | |
776 | {0x0000000000000000, 0xb000000000000000}, | |
777 | {0x0000000000000000, 0xc000000000000000}, | |
778 | {0x0000000000000000, 0xd000000000000000}, | |
779 | {0x0000000000000000, 0xe000000000000000}, | |
780 | {0x0000000000000000, 0xf000000000000000}, | |
781 | {0x0000000000000000, 0x0000000000000000}, | |
782 | ||
783 | {0x0000000000000000, 0x0000000000000000}, | |
784 | {0x0000000000000000, 0x0000000000000000}, | |
785 | {0x0000000000000000, 0x0000000000000000}, | |
786 | {0x0000000000000000, 0x0000000000000000}, | |
787 | {0x0000000000000000, 0x0000000000000000}, | |
788 | {0x0000000000000000, 0x0000000000000000}, | |
789 | {0x0000000000000000, 0x0000000000000000}, | |
790 | {0x0000000000000000, 0x0000000000000000}, | |
791 | {0x0000000000000000, 0x0000000000000000}, | |
792 | {0x0000000000000000, 0x0000000000000000}, | |
793 | {0x0000000000000000, 0x0000000000000000}, | |
794 | {0x0000000000000000, 0x0000000000000000}, | |
795 | {0x0000000000000000, 0x0000000000000000}, | |
796 | {0x0000000000000000, 0x0000000000000000}, | |
797 | {0x0000000000000000, 0x0000000000000000}, | |
798 | {0x0000000000000000, 0x0000000000000000}, | |
799 | ||
800 | {0x0000000000000000, 0x0000000000000000}, | |
801 | {0x0000000000000000, 0x0000000000000000}, | |
802 | {0x0000000000000000, 0x0000000000000000}, | |
803 | {0x0000000000000000, 0x0000000000000000}, | |
804 | {0x0000000000000000, 0x0000000000000000}, | |
805 | {0x0000000000000000, 0x0000000000000000}, | |
806 | {0x0000000000000000, 0x0000000000000000}, | |
807 | {0x0000000000000000, 0x0000000000000000}, | |
808 | {0x0000000000000000, 0x0000000000000000}, | |
809 | {0x0000000000000000, 0x0000000000000000}, | |
810 | {0x0000000000000000, 0x0000000000000000}, | |
811 | {0x0000000000000000, 0x0000000000000000}, | |
812 | {0x0000000000000000, 0x0000000000000000}, | |
813 | {0x0000000000000000, 0x0000000000000000}, | |
814 | {0x0000000000000000, 0x0000000000000000}, | |
815 | {0x0000000000000000, 0x0000000000000000}, | |
816 | ||
817 | {0x0000000000000000, 0x0000000000000000}, | |
818 | {0x0000000000000000, 0x0000000000000000}, | |
819 | {0x0000000000000000, 0x0000000000000000}, | |
820 | {0x0000000000000000, 0x0000000000000000}, | |
821 | {0x0000000000000000, 0x0000000000000000}, | |
822 | {0x0000000000000000, 0x0000000000000000}, | |
823 | {0x0000000000000000, 0x0000000000000000}, | |
824 | {0x0000000000000000, 0x0000000000000000}, | |
825 | {0x0000000000000000, 0x0000000000000000}, | |
826 | {0x0000000000000000, 0x0000000000000000}, | |
827 | {0x0000000000000000, 0x0000000000000000}, | |
828 | {0x0000000000000000, 0x0000000000000000}, | |
829 | {0x0000000000000000, 0x0000000000000000}, | |
830 | {0x0000000000000000, 0x0000000000000000}, | |
831 | {0x0000000000000000, 0x0000000000000000}, | |
832 | {0x0000000000000000, 0x0000000000000000}, | |
833 | ||
834 | {0x0000000000000000, 0x0000000000000000}, | |
835 | {0x0000000000000000, 0x0000000000000000}, | |
836 | {0x0000000000000000, 0x0000000000000000}, | |
837 | {0x0000000000000000, 0x0000000000000000}, | |
838 | {0x0000000000000000, 0x0000000000000000}, | |
839 | {0x0000000000000000, 0x0000000000000000}, | |
840 | {0x0000000000000000, 0x0000000000000000}, | |
841 | {0x0000000000000000, 0x0000000000000000}, | |
842 | {0x0000000000000000, 0x0000000000000000}, | |
843 | {0x0000000000000000, 0x0000000000000000}, | |
844 | {0x0000000000000000, 0x0000000000000000}, | |
845 | {0x0000000000000000, 0x0000000000000000}, | |
846 | {0x0000000000000000, 0x0000000000000000}, | |
847 | {0x0000000000000000, 0x0000000000000000}, | |
848 | {0x0000000000000000, 0x0000000000000000}, | |
849 | {0x0000000000000000, 0x0000000000000000}, | |
850 | ||
851 | {0x0000000000000000, 0x0000000000000000}, | |
852 | {0x0000000000000000, 0x0000000000000000}, | |
853 | {0x0000000000000000, 0x0000000000000000}, | |
854 | {0x0000000000000000, 0x0000000000000000}, | |
855 | {0x0000000000000000, 0x0000000000000000}, | |
856 | {0x0000000000000000, 0x0000000000000000}, | |
857 | {0x0000000000000000, 0x0000000000000000}, | |
858 | {0x0000000000000000, 0x0000000000000000}, | |
859 | {0x0000000000000000, 0x0000000000000000}, | |
860 | {0x0000000000000000, 0x0000000000000000}, | |
861 | {0x0000000000000000, 0x0000000000000000}, | |
862 | {0x0000000000000000, 0x0000000000000000}, | |
863 | {0x0000000000000000, 0x0000000000000000}, | |
864 | {0x0000000000000000, 0x0000000000000000}, | |
865 | {0x0000000000000000, 0x0000000000000000}, | |
866 | {0x0000000000000000, 0x0000000000000000}, | |
867 | }; | |
868 | ||
869 | const unsigned char BL_CKEccFile::galois[16][16] = | |
870 | { | |
871 | /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */ | |
872 | /* 0 */ { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, }, | |
873 | /* 1 */ { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, }, | |
874 | /* 2 */ { 0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x3, 0x1, 0x7, 0x5, 0xb, 0x9, 0xf, 0xd, }, | |
875 | /* 3 */ { 0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0xb, 0x8, 0xd, 0xe, 0x7, 0x4, 0x1, 0x2, }, | |
876 | /* 4 */ { 0x0, 0x4, 0x8, 0xc, 0x3, 0x7, 0xb, 0xf, 0x6, 0x2, 0xe, 0xa, 0x5, 0x1, 0xd, 0x9, }, | |
877 | /* 5 */ { 0x0, 0x5, 0xa, 0xf, 0x7, 0x2, 0xd, 0x8, 0xe, 0xb, 0x4, 0x1, 0x9, 0xc, 0x3, 0x6, }, | |
878 | /* 6 */ { 0x0, 0x6, 0xc, 0xa, 0xb, 0xd, 0x7, 0x1, 0x5, 0x3, 0x9, 0xf, 0xe, 0x8, 0x2, 0x4, }, | |
879 | /* 7 */ { 0x0, 0x7, 0xe, 0x9, 0xf, 0x8, 0x1, 0x6, 0xd, 0xa, 0x3, 0x4, 0x2, 0x5, 0xc, 0xb, }, | |
880 | /* 8 */ { 0x0, 0x8, 0x3, 0xb, 0x6, 0xe, 0x5, 0xd, 0xc, 0x4, 0xf, 0x7, 0xa, 0x2, 0x9, 0x1, }, | |
881 | /* 9 */ { 0x0, 0x9, 0x1, 0x8, 0x2, 0xb, 0x3, 0xa, 0x4, 0xd, 0x5, 0xc, 0x6, 0xf, 0x7, 0xe, }, | |
882 | /* a */ { 0x0, 0xa, 0x7, 0xd, 0xe, 0x4, 0x9, 0x3, 0xf, 0x5, 0x8, 0x2, 0x1, 0xb, 0x6, 0xc, }, | |
883 | /* b */ { 0x0, 0xb, 0x5, 0xe, 0xa, 0x1, 0xf, 0x4, 0x7, 0xc, 0x2, 0x9, 0xd, 0x6, 0x8, 0x3, }, | |
884 | /* c */ { 0x0, 0xc, 0xb, 0x7, 0x5, 0x9, 0xe, 0x2, 0xa, 0x6, 0x1, 0xd, 0xf, 0x3, 0x4, 0x8, }, | |
885 | /* d */ { 0x0, 0xd, 0x9, 0x4, 0x1, 0xc, 0x8, 0x5, 0x2, 0xf, 0xb, 0x6, 0x3, 0xe, 0xa, 0x7, }, | |
886 | /* e */ { 0x0, 0xe, 0xf, 0x1, 0xd, 0x3, 0x2, 0xc, 0x9, 0x7, 0x6, 0x8, 0x4, 0xa, 0xb, 0x5, }, | |
887 | /* f */ { 0x0, 0xf, 0xd, 0x2, 0x9, 0x6, 0x4, 0xb, 0x1, 0xe, 0xc, 0x3, 0x8, 0x7, 0x5, 0xa, }, | |
888 | }; | |
889 | ||
890 | const struct BL_CKEccFile::mulfact BL_CKEccFile::nibbles[] = | |
891 | { | |
892 | // good | |
893 | { 0x1, 0 }, /* nib0 */ | |
894 | { 0x2, 1 }, | |
895 | { 0x3, 2 }, | |
896 | { 0x4, 3 }, | |
897 | { 0x5, 4 }, | |
898 | { 0x6, 5 }, | |
899 | { 0x7, 6 }, | |
900 | { 0x8, 7 }, | |
901 | { 0x9, 8 }, | |
902 | { 0xa, 9 }, | |
903 | { 0xb, 10 }, | |
904 | { 0xc, 11 }, | |
905 | { 0xd, 12 }, | |
906 | { 0xe, 13 }, | |
907 | { 0xf, 14 }, | |
908 | { 0x1, 15 }, | |
909 | { 0x2, 16 }, | |
910 | { 0x3, 17 }, | |
911 | { 0x4, 18 }, | |
912 | { 0x5, 19 }, | |
913 | { 0x6, 20 }, | |
914 | { 0x7, 21 }, | |
915 | { 0x8, 22 }, | |
916 | { 0x9, 23 }, | |
917 | { 0xa, 24 }, | |
918 | { 0xb, 25 }, | |
919 | { 0xc, 26 }, | |
920 | { 0xd, 27 }, | |
921 | { 0xe, 28 }, | |
922 | { 0xf, 29 }, | |
923 | { 0x1, 31 }, | |
924 | ||
925 | { 0x0, 0 },/* end of table */ | |
926 | ||
927 | { 0x1, 0 }, /* nib1 */ | |
928 | { 0x1, 1 }, | |
929 | { 0x1, 2 }, | |
930 | { 0x1, 3 }, | |
931 | { 0x1, 4 }, | |
932 | { 0x1, 5 }, | |
933 | { 0x1, 6 }, | |
934 | { 0x1, 7 }, | |
935 | { 0x1, 8 }, | |
936 | { 0x1, 9 }, | |
937 | { 0x1, 10 }, | |
938 | { 0x1, 11 }, | |
939 | { 0x1, 12 }, | |
940 | { 0x1, 13 }, | |
941 | { 0x1, 14 }, | |
942 | { 0x1, 30 }, | |
943 | { 0x1, 31 }, | |
944 | ||
945 | { 0x0, 0 },/* end of table */ | |
946 | ||
947 | { 0x1, 15 }, /* nib2 */ | |
948 | { 0x1, 16 }, | |
949 | { 0x1, 17 }, | |
950 | { 0x1, 18 }, | |
951 | { 0x1, 19 }, | |
952 | { 0x1, 20 }, | |
953 | { 0x1, 21 }, | |
954 | { 0x1, 22 }, | |
955 | { 0x1, 23 }, | |
956 | { 0x1, 24 }, | |
957 | { 0x1, 25 }, | |
958 | { 0x1, 26 }, | |
959 | { 0x1, 27 }, | |
960 | { 0x1, 28 }, | |
961 | { 0x1, 29 }, | |
962 | { 0x1, 30 }, | |
963 | { 0x1, 31 }, | |
964 | ||
965 | { 0x0, 0 },/* end of subtable */ | |
966 | ||
967 | { 0x1, 0 }, /* nib3 */ | |
968 | { 0x9, 1 }, | |
969 | { 0xe, 2 }, | |
970 | { 0xd, 3 }, | |
971 | { 0xb, 4 }, | |
972 | { 0x7, 5 }, | |
973 | { 0x6, 6 }, | |
974 | { 0xf, 7 }, | |
975 | { 0x2, 8 }, | |
976 | { 0xc, 9 }, | |
977 | { 0x5, 10 }, | |
978 | { 0xa, 11 }, | |
979 | { 0x4, 12 }, | |
980 | { 0x3, 13 }, | |
981 | { 0x8, 14 }, | |
982 | { 0x1, 15 }, | |
983 | { 0x9, 16 }, | |
984 | { 0xe, 17 }, | |
985 | { 0xd, 18 }, | |
986 | { 0xb, 19 }, | |
987 | { 0x7, 20 }, | |
988 | { 0x6, 21 }, | |
989 | { 0xf, 22 }, | |
990 | { 0x2, 23 }, | |
991 | { 0xc, 24 }, | |
992 | { 0x5, 25 }, | |
993 | { 0xa, 26 }, | |
994 | { 0x4, 27 }, | |
995 | { 0x3, 28 }, | |
996 | { 0x8, 29 }, | |
997 | { 0x1, 30 }, | |
998 | ||
999 | { 0x0, 0 },/* end of subtable */ | |
1000 | ||
1001 | { 0x0, 0 } /* end of table */ | |
1002 | }; | |
1003 | ||
1004 | BL_CKEccFile::BL_CKEccFile() {} | |
1005 | ||
1006 | // Destructor definition | |
1007 | BL_CKEccFile::~BL_CKEccFile() {} | |
1008 | ||
1009 | uint32_t BL_CKEccFile::generateChipkillECC(ChipKillLine line) | |
1010 | { | |
1011 | unsigned long long data[2]; | |
1012 | data[0] = line.msdw; | |
1013 | data[1] = line.lsdw; | |
1014 | ||
1015 | const struct mulfact *nibs = nibbles; | |
1016 | unsigned check = 0; | |
1017 | ||
1018 | for (nibs = nibbles; nibs->mult; ) | |
1019 | { | |
1020 | do | |
1021 | { | |
1022 | unsigned long long d; | |
1023 | ||
1024 | d = data[nibs->nibble_num < 16]; | |
1025 | d >>= ((nibs->nibble_num & 0xf)*4); | |
1026 | d &= 0xf; | |
1027 | ||
1028 | check ^= galois[nibs->mult][d]; | |
1029 | nibs++; | |
1030 | } | |
1031 | while (nibs->mult); | |
1032 | ||
1033 | nibs++; | |
1034 | if (nibs->mult) | |
1035 | { | |
1036 | check <<= 4; | |
1037 | } | |
1038 | } | |
1039 | ||
1040 | return check; | |
1041 | } |