Root/arch/s390/kernel/ebcdic.c

1/*
2 * arch/s390/kernel/ebcdic.c
3 * ECBDIC -> ASCII, ASCII -> ECBDIC,
4 * upper to lower case (EBCDIC) conversion tables.
5 *
6 * S390 version
7 * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
8 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
9 * Martin Peschke <peschke@fh-brandenburg.de>
10 */
11
12#include <linux/module.h>
13#include <asm/types.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

Archive Download this file



interactive