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

source code of linux/arch/s390/kernel/ebcdic.c