linux/arch/s390/kernel/ebcdic.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 *    ECBDIC -> ASCII, ASCII -> ECBDIC,
   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