1// SPDX-License-Identifier: GPL-2.0
2/*
3 *    EBCDIC -> ASCII, ASCII -> EBCDIC,
4 *    upper to lower case (EBCDIC) conversion tables.
5 *
6 *  S390 version
7 *    Copyright IBM Corp. 1999
8 *    Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
9 *               Martin Peschke <peschke@fh-brandenburg.de>
10 */
11
12#include <linux/types.h>
13#include <linux/export.h>
14#include <asm/ebcdic.h>
15
16/*
17 * ASCII (IBM PC 437)  -> EBCDIC 037
18 */
19__u8 _ascebc[256] =
20{
21 /*00 NUL   SOH   STX   ETX   EOT   ENQ   ACK   BEL */
22     0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F,
23 /*08  BS    HT    LF    VT    FF    CR    SO    SI */
24 /*              ->NL                               */
25     0x16, 0x05, 0x15, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
26 /*10 DLE   DC1   DC2   DC3   DC4   NAK   SYN   ETB */
27     0x10, 0x11, 0x12, 0x13, 0x3C, 0x3D, 0x32, 0x26,
28 /*18 CAN    EM   SUB   ESC    FS    GS    RS    US */
29 /*                               ->IGS ->IRS ->IUS */
30     0x18, 0x19, 0x3F, 0x27, 0x22, 0x1D, 0x1E, 0x1F,
31 /*20  SP     !     "     #     $     %     &     ' */
32     0x40, 0x5A, 0x7F, 0x7B, 0x5B, 0x6C, 0x50, 0x7D,
33 /*28   (     )     *     +     ,     -    .      / */
34     0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61,
35 /*30   0     1     2     3     4     5     6     7 */
36     0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
37 /*38   8     9     :     ;     <     =     >     ? */
38     0xF8, 0xF9, 0x7A, 0x5E, 0x4C, 0x7E, 0x6E, 0x6F,
39 /*40   @     A     B     C     D     E     F     G */
40     0x7C, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
41 /*48   H     I     J     K     L     M     N     O */
42     0xC8, 0xC9, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,
43 /*50   P     Q     R     S     T     U     V     W */
44     0xD7, 0xD8, 0xD9, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6,
45 /*58   X     Y     Z     [     \     ]     ^     _ */
46     0xE7, 0xE8, 0xE9, 0xBA, 0xE0, 0xBB, 0xB0, 0x6D,
47 /*60   `     a     b     c     d     e     f     g */
48     0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
49 /*68   h     i     j     k     l     m     n     o */
50     0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
51 /*70   p     q     r     s     t     u     v     w */
52     0x97, 0x98, 0x99, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6,
53 /*78   x     y     z     {     |     }     ~    DL */
54     0xA7, 0xA8, 0xA9, 0xC0, 0x4F, 0xD0, 0xA1, 0x07,
55 /*80*/
56     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
57 /*88*/
58     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
59 /*90*/
60     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
61 /*98*/
62     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
63 /*A0*/
64     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
65 /*A8*/
66     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
67 /*B0*/
68     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
69 /*B8*/
70     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
71 /*C0*/
72     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
73 /*C8*/
74     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
75 /*D0*/
76     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
77 /*D8*/
78     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
79 /*E0        sz						*/
80     0x3F, 0x59, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
81 /*E8*/
82     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
83 /*F0*/
84     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
85 /*F8*/
86     0x90, 0x3F, 0x3F, 0x3F, 0x3F, 0xEA, 0x3F, 0xFF
87};
88
89/*
90 * EBCDIC 037 -> ASCII (IBM PC 437)
91 */
92__u8 _ebcasc[256] =
93{
94 /* 0x00   NUL   SOH   STX   ETX  *SEL    HT  *RNL   DEL */
95          0x00, 0x01, 0x02, 0x03, 0x07, 0x09, 0x07, 0x7F,
96 /* 0x08   -GE  -SPS  -RPT    VT    FF    CR    SO    SI */
97          0x07, 0x07, 0x07, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
98 /* 0x10   DLE   DC1   DC2   DC3  -RES   -NL    BS  -POC
99                                  -ENP  ->LF             */
100          0x10, 0x11, 0x12, 0x13, 0x07, 0x0A, 0x08, 0x07,
101 /* 0x18   CAN    EM  -UBS  -CU1  -IFS  -IGS  -IRS  -ITB
102                                                    -IUS */
103          0x18, 0x19, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
104 /* 0x20   -DS  -SOS    FS  -WUS  -BYP    LF   ETB   ESC
105                                  -INP                   */
106          0x07, 0x07, 0x1C, 0x07, 0x07, 0x0A, 0x17, 0x1B,
107 /* 0x28   -SA  -SFE   -SM  -CSP  -MFA   ENQ   ACK   BEL
108                       -SW                               */
109          0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07,
110 /* 0x30  ----  ----   SYN   -IR   -PP  -TRN  -NBS   EOT */
111          0x07, 0x07, 0x16, 0x07, 0x07, 0x07, 0x07, 0x04,
112 /* 0x38  -SBS   -IT  -RFF  -CU3   DC4   NAK  ----   SUB */
113          0x07, 0x07, 0x07, 0x07, 0x14, 0x15, 0x07, 0x1A,
114 /* 0x40    SP   RSP           ��              ----       */
115          0x20, 0xFF, 0x83, 0x84, 0x85, 0xA0, 0x07, 0x86,
116 /* 0x48                       .     <     (     +     | */
117          0x87, 0xA4, 0x9B, 0x2E, 0x3C, 0x28, 0x2B, 0x7C,
118 /* 0x50     &                                      ---- */
119          0x26, 0x82, 0x88, 0x89, 0x8A, 0xA1, 0x8C, 0x07,
120 /* 0x58           ��     !     $     *     )     ;       */
121          0x8D, 0xE1, 0x21, 0x24, 0x2A, 0x29, 0x3B, 0xAA,
122 /* 0x60     -     /  ----     ��  ----  ----  ----       */
123          0x2D, 0x2F, 0x07, 0x8E, 0x07, 0x07, 0x07, 0x8F,
124 /* 0x68              ----     ,     %     _     >     ? */
125          0x80, 0xA5, 0x07, 0x2C, 0x25, 0x5F, 0x3E, 0x3F,
126 /* 0x70  ----        ----  ----  ----  ----  ----  ---- */
127          0x07, 0x90, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
128 /* 0x78     *     `     :     #     @     '     =     " */
129          0x70, 0x60, 0x3A, 0x23, 0x40, 0x27, 0x3D, 0x22,
130 /* 0x80     *     a     b     c     d     e     f     g */
131          0x07, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
132 /* 0x88     h     i              ----  ----  ----       */
133          0x68, 0x69, 0xAE, 0xAF, 0x07, 0x07, 0x07, 0xF1,
134 /* 0x90     ��     j     k     l     m     n     o     p */
135          0xF8, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70,
136 /* 0x98     q     r                    ----        ---- */
137          0x71, 0x72, 0xA6, 0xA7, 0x91, 0x07, 0x92, 0x07,
138 /* 0xA0           ~     s     t     u     v     w     x */
139          0xE6, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
140 /* 0xA8     y     z              ----  ----  ----  ---- */
141          0x79, 0x7A, 0xAD, 0xAB, 0x07, 0x07, 0x07, 0x07,
142 /* 0xB0     ^                    ----     ��  ----       */
143          0x5E, 0x9C, 0x9D, 0xFA, 0x07, 0x07, 0x07, 0xAC,
144 /* 0xB8        ----     [     ]  ----  ----  ----  ---- */
145          0xAB, 0x07, 0x5B, 0x5D, 0x07, 0x07, 0x07, 0x07,
146 /* 0xC0     {     A     B     C     D     E     F     G */
147          0x7B, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
148 /* 0xC8     H     I  ----           ��              ---- */
149          0x48, 0x49, 0x07, 0x93, 0x94, 0x95, 0xA2, 0x07,
150 /* 0xD0     }     J     K     L     M     N     O     P */
151          0x7D, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
152 /* 0xD8     Q     R  ----           ��                   */
153          0x51, 0x52, 0x07, 0x96, 0x81, 0x97, 0xA3, 0x98,
154 /* 0xE0     \           S     T     U     V     W     X */
155          0x5C, 0xF6, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
156 /* 0xE8     Y     Z        ----     ��  ----  ----  ---- */
157          0x59, 0x5A, 0xFD, 0x07, 0x99, 0x07, 0x07, 0x07,
158 /* 0xF0     0     1     2     3     4     5     6     7 */
159          0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
160 /* 0xF8     8     9  ----  ----     ��  ----  ----  ---- */
161          0x38, 0x39, 0x07, 0x07, 0x9A, 0x07, 0x07, 0x07
162};
163
164
165/*
166 * ASCII (IBM PC 437)  -> EBCDIC 500
167 */
168__u8 _ascebc_500[256] =
169{
170 /*00 NUL   SOH   STX   ETX   EOT   ENQ   ACK   BEL */
171     0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F,
172 /*08  BS    HT    LF    VT    FF    CR    SO    SI */
173 /*              ->NL                               */
174     0x16, 0x05, 0x15, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
175 /*10 DLE   DC1   DC2   DC3   DC4   NAK   SYN   ETB */
176     0x10, 0x11, 0x12, 0x13, 0x3C, 0x3D, 0x32, 0x26,
177 /*18 CAN    EM   SUB   ESC    FS    GS    RS    US */
178 /*                               ->IGS ->IRS ->IUS */
179     0x18, 0x19, 0x3F, 0x27, 0x22, 0x1D, 0x1E, 0x1F,
180 /*20  SP     !     "     #     $     %     &     ' */
181     0x40, 0x4F, 0x7F, 0x7B, 0x5B, 0x6C, 0x50, 0x7D,
182 /*28   (     )     *     +     ,     -    .      / */
183     0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61,
184 /*30   0     1     2     3     4     5     6     7 */
185     0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
186 /*38   8     9     :     ;     <     =     >     ? */
187     0xF8, 0xF9, 0x7A, 0x5E, 0x4C, 0x7E, 0x6E, 0x6F,
188 /*40   @     A     B     C     D     E     F     G */
189     0x7C, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
190 /*48   H     I     J     K     L     M     N     O */
191     0xC8, 0xC9, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,
192 /*50   P     Q     R     S     T     U     V     W */
193     0xD7, 0xD8, 0xD9, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6,
194 /*58   X     Y     Z     [     \     ]     ^     _ */
195     0xE7, 0xE8, 0xE9, 0x4A, 0xE0, 0x5A, 0x5F, 0x6D,
196 /*60   `     a     b     c     d     e     f     g */
197     0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
198 /*68   h     i     j     k     l     m     n     o */
199     0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
200 /*70   p     q     r     s     t     u     v     w */
201     0x97, 0x98, 0x99, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6,
202 /*78   x     y     z     {     |     }     ~    DL */
203     0xA7, 0xA8, 0xA9, 0xC0, 0xBB, 0xD0, 0xA1, 0x07,
204 /*80*/
205     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
206 /*88*/
207     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
208 /*90*/
209     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
210 /*98*/
211     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
212 /*A0*/
213     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
214 /*A8*/
215     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
216 /*B0*/
217     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
218 /*B8*/
219     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
220 /*C0*/
221     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
222 /*C8*/
223     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
224 /*D0*/
225     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
226 /*D8*/
227     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
228 /*E0        sz						*/
229     0x3F, 0x59, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
230 /*E8*/
231     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
232 /*F0*/
233     0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
234 /*F8*/
235     0x90, 0x3F, 0x3F, 0x3F, 0x3F, 0xEA, 0x3F, 0xFF
236};
237
238/*
239 * EBCDIC 500 -> ASCII (IBM PC 437)
240 */
241__u8 _ebcasc_500[256] =
242{
243 /* 0x00   NUL   SOH   STX   ETX  *SEL    HT  *RNL   DEL */
244          0x00, 0x01, 0x02, 0x03, 0x07, 0x09, 0x07, 0x7F,
245 /* 0x08   -GE  -SPS  -RPT    VT    FF    CR    SO    SI */
246          0x07, 0x07, 0x07, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
247 /* 0x10   DLE   DC1   DC2   DC3  -RES   -NL    BS  -POC
248                                  -ENP  ->LF             */
249          0x10, 0x11, 0x12, 0x13, 0x07, 0x0A, 0x08, 0x07,
250 /* 0x18   CAN    EM  -UBS  -CU1  -IFS  -IGS  -IRS  -ITB
251                                                    -IUS */
252          0x18, 0x19, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
253 /* 0x20   -DS  -SOS    FS  -WUS  -BYP    LF   ETB   ESC
254                                  -INP                   */
255          0x07, 0x07, 0x1C, 0x07, 0x07, 0x0A, 0x17, 0x1B,
256 /* 0x28   -SA  -SFE   -SM  -CSP  -MFA   ENQ   ACK   BEL
257                       -SW                               */
258          0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07,
259 /* 0x30  ----  ----   SYN   -IR   -PP  -TRN  -NBS   EOT */
260          0x07, 0x07, 0x16, 0x07, 0x07, 0x07, 0x07, 0x04,
261 /* 0x38  -SBS   -IT  -RFF  -CU3   DC4   NAK  ----   SUB */
262          0x07, 0x07, 0x07, 0x07, 0x14, 0x15, 0x07, 0x1A,
263 /* 0x40    SP   RSP           ��              ----       */
264          0x20, 0xFF, 0x83, 0x84, 0x85, 0xA0, 0x07, 0x86,
265 /* 0x48                 [     .     <     (     +     ! */
266          0x87, 0xA4, 0x5B, 0x2E, 0x3C, 0x28, 0x2B, 0x21,
267 /* 0x50     &                                      ---- */
268          0x26, 0x82, 0x88, 0x89, 0x8A, 0xA1, 0x8C, 0x07,
269 /* 0x58           ��     ]     $     *     )     ;     ^ */
270          0x8D, 0xE1, 0x5D, 0x24, 0x2A, 0x29, 0x3B, 0x5E,
271 /* 0x60     -     /  ----     ��  ----  ----  ----       */
272          0x2D, 0x2F, 0x07, 0x8E, 0x07, 0x07, 0x07, 0x8F,
273 /* 0x68              ----     ,     %     _     >     ? */
274          0x80, 0xA5, 0x07, 0x2C, 0x25, 0x5F, 0x3E, 0x3F,
275 /* 0x70  ----        ----  ----  ----  ----  ----  ---- */
276          0x07, 0x90, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
277 /* 0x78     *     `     :     #     @     '     =     " */
278          0x70, 0x60, 0x3A, 0x23, 0x40, 0x27, 0x3D, 0x22,
279 /* 0x80     *     a     b     c     d     e     f     g */
280          0x07, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
281 /* 0x88     h     i              ----  ----  ----       */
282          0x68, 0x69, 0xAE, 0xAF, 0x07, 0x07, 0x07, 0xF1,
283 /* 0x90     ��     j     k     l     m     n     o     p */
284          0xF8, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70,
285 /* 0x98     q     r                    ----        ---- */
286          0x71, 0x72, 0xA6, 0xA7, 0x91, 0x07, 0x92, 0x07,
287 /* 0xA0           ~     s     t     u     v     w     x */
288          0xE6, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
289 /* 0xA8     y     z              ----  ----  ----  ---- */
290          0x79, 0x7A, 0xAD, 0xAB, 0x07, 0x07, 0x07, 0x07,
291 /* 0xB0                          ----     ��  ----       */
292          0x9B, 0x9C, 0x9D, 0xFA, 0x07, 0x07, 0x07, 0xAC,
293 /* 0xB8        ----           |  ----  ----  ----  ---- */
294          0xAB, 0x07, 0xAA, 0x7C, 0x07, 0x07, 0x07, 0x07,
295 /* 0xC0     {     A     B     C     D     E     F     G */
296          0x7B, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
297 /* 0xC8     H     I  ----           ��              ---- */
298          0x48, 0x49, 0x07, 0x93, 0x94, 0x95, 0xA2, 0x07,
299 /* 0xD0     }     J     K     L     M     N     O     P */
300          0x7D, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
301 /* 0xD8     Q     R  ----           ��                   */
302          0x51, 0x52, 0x07, 0x96, 0x81, 0x97, 0xA3, 0x98,
303 /* 0xE0     \           S     T     U     V     W     X */
304          0x5C, 0xF6, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
305 /* 0xE8     Y     Z        ----     ��  ----  ----  ---- */
306          0x59, 0x5A, 0xFD, 0x07, 0x99, 0x07, 0x07, 0x07,
307 /* 0xF0     0     1     2     3     4     5     6     7 */
308          0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
309 /* 0xF8     8     9  ----  ----     ��  ----  ----  ---- */
310          0x38, 0x39, 0x07, 0x07, 0x9A, 0x07, 0x07, 0x07
311};
312
313
314/*
315 * EBCDIC 037/500 conversion table:
316 * from upper to lower case
317 */
318__u8 _ebc_tolower[256] =
319{
320	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
321	0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
322	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
323	0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
324	0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
325	0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
326	0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
327	0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
328	0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
329	0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
330	0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
331	0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
332	0x60, 0x61, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
333	0x48, 0x49, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
334	0x70, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
335	0x58, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
336	0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
337	0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
338	0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
339	0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9C, 0x9F,
340	0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
341	0xA8, 0xA9, 0xAA, 0xAB, 0x8C, 0x8D, 0x8E, 0xAF,
342	0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7,
343	0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
344	0xC0, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
345	0x88, 0x89, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
346	0xD0, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
347	0x98, 0x99, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
348	0xE0, 0xE1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
349	0xA8, 0xA9, 0xEA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
350	0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
351	0xF8, 0xF9, 0xFA, 0xDB, 0xDC, 0xDD, 0xDE, 0xFF
352};
353
354
355/*
356 * EBCDIC 037/500 conversion table:
357 * from lower to upper case
358 */
359__u8 _ebc_toupper[256] =
360{
361	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
362	0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
363	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
364	0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
365	0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
366	0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
367	0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
368	0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
369	0x40, 0x41, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
370	0x68, 0x69, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
371	0x50, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
372	0x78, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
373	0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
374	0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
375	0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
376	0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
377	0x80, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
378	0xC8, 0xC9, 0x8A, 0x8B, 0xAC, 0xAD, 0xAE, 0x8F,
379	0x90, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
380	0xD8, 0xD9, 0x9A, 0x9B, 0x9E, 0x9D, 0x9E, 0x9F,
381	0xA0, 0xA1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
382	0xE8, 0xE9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
383	0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7,
384	0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
385	0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
386	0xC8, 0xC9, 0xCA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
387	0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
388	0xD8, 0xD9, 0xDA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF,
389	0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
390	0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
391	0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
392	0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
393};
394
395EXPORT_SYMBOL(_ascebc_500);
396EXPORT_SYMBOL(_ebcasc_500);
397EXPORT_SYMBOL(_ascebc);
398EXPORT_SYMBOL(_ebcasc);
399EXPORT_SYMBOL(_ebc_tolower);
400EXPORT_SYMBOL(_ebc_toupper);
401
402