Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  *    ECBDIC -> ASCII, ASCII -> ECBDIC,
0004  *    upper to lower case (EBCDIC) conversion tables.
0005  *
0006  *  S390 version
0007  *    Copyright IBM Corp. 1999
0008  *    Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
0009  *               Martin Peschke <peschke@fh-brandenburg.de>
0010  */
0011 
0012 #include <linux/types.h>
0013 #include <linux/export.h>
0014 #include <asm/ebcdic.h>
0015 
0016 /*
0017  * ASCII (IBM PC 437)  -> EBCDIC 037
0018  */
0019 __u8 _ascebc[256] =
0020 {
0021  /*00 NUL   SOH   STX   ETX   EOT   ENQ   ACK   BEL */
0022      0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F,
0023  /*08  BS    HT    LF    VT    FF    CR    SO    SI */
0024  /*              ->NL                               */
0025      0x16, 0x05, 0x15, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0026  /*10 DLE   DC1   DC2   DC3   DC4   NAK   SYN   ETB */
0027      0x10, 0x11, 0x12, 0x13, 0x3C, 0x3D, 0x32, 0x26,
0028  /*18 CAN    EM   SUB   ESC    FS    GS    RS    US */
0029  /*                               ->IGS ->IRS ->IUS */
0030      0x18, 0x19, 0x3F, 0x27, 0x22, 0x1D, 0x1E, 0x1F,
0031  /*20  SP     !     "     #     $     %     &     ' */
0032      0x40, 0x5A, 0x7F, 0x7B, 0x5B, 0x6C, 0x50, 0x7D,
0033  /*28   (     )     *     +     ,     -    .      / */
0034      0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61,
0035  /*30   0     1     2     3     4     5     6     7 */
0036      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
0037  /*38   8     9     :     ;     <     =     >     ? */
0038      0xF8, 0xF9, 0x7A, 0x5E, 0x4C, 0x7E, 0x6E, 0x6F,
0039  /*40   @     A     B     C     D     E     F     G */
0040      0x7C, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
0041  /*48   H     I     J     K     L     M     N     O */
0042      0xC8, 0xC9, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,
0043  /*50   P     Q     R     S     T     U     V     W */
0044      0xD7, 0xD8, 0xD9, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6,
0045  /*58   X     Y     Z     [     \     ]     ^     _ */
0046      0xE7, 0xE8, 0xE9, 0xBA, 0xE0, 0xBB, 0xB0, 0x6D,
0047  /*60   `     a     b     c     d     e     f     g */
0048      0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0049  /*68   h     i     j     k     l     m     n     o */
0050      0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
0051  /*70   p     q     r     s     t     u     v     w */
0052      0x97, 0x98, 0x99, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6,
0053  /*78   x     y     z     {     |     }     ~    DL */
0054      0xA7, 0xA8, 0xA9, 0xC0, 0x4F, 0xD0, 0xA1, 0x07,
0055  /*80*/
0056      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0057  /*88*/
0058      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0059  /*90*/
0060      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0061  /*98*/
0062      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0063  /*A0*/
0064      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0065  /*A8*/
0066      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0067  /*B0*/
0068      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0069  /*B8*/
0070      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0071  /*C0*/
0072      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0073  /*C8*/
0074      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0075  /*D0*/
0076      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0077  /*D8*/
0078      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0079  /*E0        sz                     */
0080      0x3F, 0x59, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0081  /*E8*/
0082      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0083  /*F0*/
0084      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0085  /*F8*/
0086      0x90, 0x3F, 0x3F, 0x3F, 0x3F, 0xEA, 0x3F, 0xFF
0087 };
0088 
0089 /*
0090  * EBCDIC 037 -> ASCII (IBM PC 437)
0091  */
0092 __u8 _ebcasc[256] =
0093 {
0094  /* 0x00   NUL   SOH   STX   ETX  *SEL    HT  *RNL   DEL */
0095           0x00, 0x01, 0x02, 0x03, 0x07, 0x09, 0x07, 0x7F,
0096  /* 0x08   -GE  -SPS  -RPT    VT    FF    CR    SO    SI */
0097           0x07, 0x07, 0x07, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0098  /* 0x10   DLE   DC1   DC2   DC3  -RES   -NL    BS  -POC
0099                                   -ENP  ->LF             */
0100           0x10, 0x11, 0x12, 0x13, 0x07, 0x0A, 0x08, 0x07,
0101  /* 0x18   CAN    EM  -UBS  -CU1  -IFS  -IGS  -IRS  -ITB
0102                                                     -IUS */
0103           0x18, 0x19, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
0104  /* 0x20   -DS  -SOS    FS  -WUS  -BYP    LF   ETB   ESC
0105                                   -INP                   */
0106           0x07, 0x07, 0x1C, 0x07, 0x07, 0x0A, 0x17, 0x1B,
0107  /* 0x28   -SA  -SFE   -SM  -CSP  -MFA   ENQ   ACK   BEL
0108                        -SW                               */ 
0109           0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07,
0110  /* 0x30  ----  ----   SYN   -IR   -PP  -TRN  -NBS   EOT */
0111           0x07, 0x07, 0x16, 0x07, 0x07, 0x07, 0x07, 0x04,
0112  /* 0x38  -SBS   -IT  -RFF  -CU3   DC4   NAK  ----   SUB */
0113           0x07, 0x07, 0x07, 0x07, 0x14, 0x15, 0x07, 0x1A,
0114  /* 0x40    SP   RSP           ä              ----       */
0115           0x20, 0xFF, 0x83, 0x84, 0x85, 0xA0, 0x07, 0x86,
0116  /* 0x48                       .     <     (     +     | */
0117           0x87, 0xA4, 0x9B, 0x2E, 0x3C, 0x28, 0x2B, 0x7C,
0118  /* 0x50     &                                      ---- */
0119           0x26, 0x82, 0x88, 0x89, 0x8A, 0xA1, 0x8C, 0x07,
0120  /* 0x58           ß     !     $     *     )     ;       */
0121           0x8D, 0xE1, 0x21, 0x24, 0x2A, 0x29, 0x3B, 0xAA,
0122  /* 0x60     -     /  ----     Ä  ----  ----  ----       */
0123           0x2D, 0x2F, 0x07, 0x8E, 0x07, 0x07, 0x07, 0x8F,
0124  /* 0x68              ----     ,     %     _     >     ? */ 
0125           0x80, 0xA5, 0x07, 0x2C, 0x25, 0x5F, 0x3E, 0x3F,
0126  /* 0x70  ----        ----  ----  ----  ----  ----  ---- */
0127           0x07, 0x90, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
0128  /* 0x78     *     `     :     #     @     '     =     " */
0129           0x70, 0x60, 0x3A, 0x23, 0x40, 0x27, 0x3D, 0x22,
0130  /* 0x80     *     a     b     c     d     e     f     g */
0131           0x07, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
0132  /* 0x88     h     i              ----  ----  ----       */
0133           0x68, 0x69, 0xAE, 0xAF, 0x07, 0x07, 0x07, 0xF1,
0134  /* 0x90     °     j     k     l     m     n     o     p */
0135           0xF8, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70,
0136  /* 0x98     q     r                    ----        ---- */
0137           0x71, 0x72, 0xA6, 0xA7, 0x91, 0x07, 0x92, 0x07,
0138  /* 0xA0           ~     s     t     u     v     w     x */
0139           0xE6, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
0140  /* 0xA8     y     z              ----  ----  ----  ---- */
0141           0x79, 0x7A, 0xAD, 0xAB, 0x07, 0x07, 0x07, 0x07,
0142  /* 0xB0     ^                    ----     §  ----       */
0143           0x5E, 0x9C, 0x9D, 0xFA, 0x07, 0x07, 0x07, 0xAC,
0144  /* 0xB8        ----     [     ]  ----  ----  ----  ---- */
0145           0xAB, 0x07, 0x5B, 0x5D, 0x07, 0x07, 0x07, 0x07,
0146  /* 0xC0     {     A     B     C     D     E     F     G */
0147           0x7B, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0148  /* 0xC8     H     I  ----           ö              ---- */
0149           0x48, 0x49, 0x07, 0x93, 0x94, 0x95, 0xA2, 0x07,
0150  /* 0xD0     }     J     K     L     M     N     O     P */
0151           0x7D, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
0152  /* 0xD8     Q     R  ----           ü                   */
0153           0x51, 0x52, 0x07, 0x96, 0x81, 0x97, 0xA3, 0x98,
0154  /* 0xE0     \           S     T     U     V     W     X */
0155           0x5C, 0xF6, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
0156  /* 0xE8     Y     Z        ----     Ö  ----  ----  ---- */
0157           0x59, 0x5A, 0xFD, 0x07, 0x99, 0x07, 0x07, 0x07,
0158  /* 0xF0     0     1     2     3     4     5     6     7 */
0159           0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0160  /* 0xF8     8     9  ----  ----     Ü  ----  ----  ---- */
0161           0x38, 0x39, 0x07, 0x07, 0x9A, 0x07, 0x07, 0x07
0162 };
0163 
0164 
0165 /*
0166  * ASCII (IBM PC 437)  -> EBCDIC 500
0167  */
0168 __u8 _ascebc_500[256] =
0169 {
0170  /*00 NUL   SOH   STX   ETX   EOT   ENQ   ACK   BEL */
0171      0x00, 0x01, 0x02, 0x03, 0x37, 0x2D, 0x2E, 0x2F,
0172  /*08  BS    HT    LF    VT    FF    CR    SO    SI */
0173  /*              ->NL                               */
0174      0x16, 0x05, 0x15, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0175  /*10 DLE   DC1   DC2   DC3   DC4   NAK   SYN   ETB */
0176      0x10, 0x11, 0x12, 0x13, 0x3C, 0x3D, 0x32, 0x26,
0177  /*18 CAN    EM   SUB   ESC    FS    GS    RS    US */
0178  /*                               ->IGS ->IRS ->IUS */
0179      0x18, 0x19, 0x3F, 0x27, 0x22, 0x1D, 0x1E, 0x1F,
0180  /*20  SP     !     "     #     $     %     &     ' */
0181      0x40, 0x4F, 0x7F, 0x7B, 0x5B, 0x6C, 0x50, 0x7D,
0182  /*28   (     )     *     +     ,     -    .      / */
0183      0x4D, 0x5D, 0x5C, 0x4E, 0x6B, 0x60, 0x4B, 0x61,
0184  /*30   0     1     2     3     4     5     6     7 */
0185      0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
0186  /*38   8     9     :     ;     <     =     >     ? */
0187      0xF8, 0xF9, 0x7A, 0x5E, 0x4C, 0x7E, 0x6E, 0x6F,
0188  /*40   @     A     B     C     D     E     F     G */
0189      0x7C, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
0190  /*48   H     I     J     K     L     M     N     O */
0191      0xC8, 0xC9, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,
0192  /*50   P     Q     R     S     T     U     V     W */
0193      0xD7, 0xD8, 0xD9, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6,
0194  /*58   X     Y     Z     [     \     ]     ^     _ */
0195      0xE7, 0xE8, 0xE9, 0x4A, 0xE0, 0x5A, 0x5F, 0x6D,
0196  /*60   `     a     b     c     d     e     f     g */
0197      0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0198  /*68   h     i     j     k     l     m     n     o */
0199      0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
0200  /*70   p     q     r     s     t     u     v     w */
0201      0x97, 0x98, 0x99, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6,
0202  /*78   x     y     z     {     |     }     ~    DL */
0203      0xA7, 0xA8, 0xA9, 0xC0, 0xBB, 0xD0, 0xA1, 0x07,
0204  /*80*/
0205      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0206  /*88*/
0207      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0208  /*90*/
0209      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0210  /*98*/
0211      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0212  /*A0*/
0213      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0214  /*A8*/
0215      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0216  /*B0*/
0217      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0218  /*B8*/
0219      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0220  /*C0*/
0221      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0222  /*C8*/
0223      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0224  /*D0*/
0225      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0226  /*D8*/
0227      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0228  /*E0        sz                     */
0229      0x3F, 0x59, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0230  /*E8*/
0231      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0232  /*F0*/
0233      0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
0234  /*F8*/
0235      0x90, 0x3F, 0x3F, 0x3F, 0x3F, 0xEA, 0x3F, 0xFF
0236 };
0237 
0238 /*
0239  * EBCDIC 500 -> ASCII (IBM PC 437)
0240  */
0241 __u8 _ebcasc_500[256] =
0242 {
0243  /* 0x00   NUL   SOH   STX   ETX  *SEL    HT  *RNL   DEL */
0244           0x00, 0x01, 0x02, 0x03, 0x07, 0x09, 0x07, 0x7F,
0245  /* 0x08   -GE  -SPS  -RPT    VT    FF    CR    SO    SI */
0246           0x07, 0x07, 0x07, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0247  /* 0x10   DLE   DC1   DC2   DC3  -RES   -NL    BS  -POC
0248                                   -ENP  ->LF             */
0249           0x10, 0x11, 0x12, 0x13, 0x07, 0x0A, 0x08, 0x07,
0250  /* 0x18   CAN    EM  -UBS  -CU1  -IFS  -IGS  -IRS  -ITB
0251                                                     -IUS */
0252           0x18, 0x19, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
0253  /* 0x20   -DS  -SOS    FS  -WUS  -BYP    LF   ETB   ESC
0254                                   -INP                   */
0255           0x07, 0x07, 0x1C, 0x07, 0x07, 0x0A, 0x17, 0x1B,
0256  /* 0x28   -SA  -SFE   -SM  -CSP  -MFA   ENQ   ACK   BEL
0257                        -SW                               */ 
0258           0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07,
0259  /* 0x30  ----  ----   SYN   -IR   -PP  -TRN  -NBS   EOT */
0260           0x07, 0x07, 0x16, 0x07, 0x07, 0x07, 0x07, 0x04,
0261  /* 0x38  -SBS   -IT  -RFF  -CU3   DC4   NAK  ----   SUB */
0262           0x07, 0x07, 0x07, 0x07, 0x14, 0x15, 0x07, 0x1A,
0263  /* 0x40    SP   RSP           ä              ----       */
0264           0x20, 0xFF, 0x83, 0x84, 0x85, 0xA0, 0x07, 0x86,
0265  /* 0x48                 [     .     <     (     +     ! */
0266           0x87, 0xA4, 0x5B, 0x2E, 0x3C, 0x28, 0x2B, 0x21,
0267  /* 0x50     &                                      ---- */
0268           0x26, 0x82, 0x88, 0x89, 0x8A, 0xA1, 0x8C, 0x07,
0269  /* 0x58           ß     ]     $     *     )     ;     ^ */
0270           0x8D, 0xE1, 0x5D, 0x24, 0x2A, 0x29, 0x3B, 0x5E,
0271  /* 0x60     -     /  ----     Ä  ----  ----  ----       */
0272           0x2D, 0x2F, 0x07, 0x8E, 0x07, 0x07, 0x07, 0x8F,
0273  /* 0x68              ----     ,     %     _     >     ? */ 
0274           0x80, 0xA5, 0x07, 0x2C, 0x25, 0x5F, 0x3E, 0x3F,
0275  /* 0x70  ----        ----  ----  ----  ----  ----  ---- */
0276           0x07, 0x90, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
0277  /* 0x78     *     `     :     #     @     '     =     " */
0278           0x70, 0x60, 0x3A, 0x23, 0x40, 0x27, 0x3D, 0x22,
0279  /* 0x80     *     a     b     c     d     e     f     g */
0280           0x07, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
0281  /* 0x88     h     i              ----  ----  ----       */
0282           0x68, 0x69, 0xAE, 0xAF, 0x07, 0x07, 0x07, 0xF1,
0283  /* 0x90     °     j     k     l     m     n     o     p */
0284           0xF8, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70,
0285  /* 0x98     q     r                    ----        ---- */
0286           0x71, 0x72, 0xA6, 0xA7, 0x91, 0x07, 0x92, 0x07,
0287  /* 0xA0           ~     s     t     u     v     w     x */
0288           0xE6, 0x7E, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
0289  /* 0xA8     y     z              ----  ----  ----  ---- */
0290           0x79, 0x7A, 0xAD, 0xAB, 0x07, 0x07, 0x07, 0x07,
0291  /* 0xB0                          ----     §  ----       */
0292           0x9B, 0x9C, 0x9D, 0xFA, 0x07, 0x07, 0x07, 0xAC,
0293  /* 0xB8        ----           |  ----  ----  ----  ---- */
0294           0xAB, 0x07, 0xAA, 0x7C, 0x07, 0x07, 0x07, 0x07,
0295  /* 0xC0     {     A     B     C     D     E     F     G */
0296           0x7B, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0297  /* 0xC8     H     I  ----           ö              ---- */
0298           0x48, 0x49, 0x07, 0x93, 0x94, 0x95, 0xA2, 0x07,
0299  /* 0xD0     }     J     K     L     M     N     O     P */
0300           0x7D, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50,
0301  /* 0xD8     Q     R  ----           ü                   */
0302           0x51, 0x52, 0x07, 0x96, 0x81, 0x97, 0xA3, 0x98,
0303  /* 0xE0     \           S     T     U     V     W     X */
0304           0x5C, 0xF6, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
0305  /* 0xE8     Y     Z        ----     Ö  ----  ----  ---- */
0306           0x59, 0x5A, 0xFD, 0x07, 0x99, 0x07, 0x07, 0x07,
0307  /* 0xF0     0     1     2     3     4     5     6     7 */
0308           0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0309  /* 0xF8     8     9  ----  ----     Ü  ----  ----  ---- */
0310           0x38, 0x39, 0x07, 0x07, 0x9A, 0x07, 0x07, 0x07
0311 };
0312 
0313 
0314 /*
0315  * EBCDIC 037/500 conversion table:
0316  * from upper to lower case
0317  */
0318 __u8 _ebc_tolower[256] =
0319 {
0320     0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0321     0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0322     0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0323     0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
0324     0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
0325     0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
0326     0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0327     0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
0328     0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0329     0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
0330     0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
0331     0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
0332     0x60, 0x61, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0333     0x48, 0x49, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
0334     0x70, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
0335     0x58, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
0336     0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0337     0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
0338     0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
0339     0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9C, 0x9F,
0340     0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
0341     0xA8, 0xA9, 0xAA, 0xAB, 0x8C, 0x8D, 0x8E, 0xAF,
0342     0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7,
0343     0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
0344     0xC0, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0345     0x88, 0x89, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
0346     0xD0, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
0347     0x98, 0x99, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF,
0348     0xE0, 0xE1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
0349     0xA8, 0xA9, 0xEA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF,
0350     0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
0351     0xF8, 0xF9, 0xFA, 0xDB, 0xDC, 0xDD, 0xDE, 0xFF
0352 };
0353 
0354 
0355 /*
0356  * EBCDIC 037/500 conversion table:
0357  * from lower to upper case
0358  */
0359 __u8 _ebc_toupper[256] =
0360 {
0361     0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0362     0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0363     0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0364     0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
0365     0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
0366     0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
0367     0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0368     0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
0369     0x40, 0x41, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
0370     0x68, 0x69, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
0371     0x50, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
0372     0x78, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
0373     0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
0374     0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
0375     0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
0376     0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
0377     0x80, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
0378     0xC8, 0xC9, 0x8A, 0x8B, 0xAC, 0xAD, 0xAE, 0x8F,
0379     0x90, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
0380     0xD8, 0xD9, 0x9A, 0x9B, 0x9E, 0x9D, 0x9E, 0x9F,
0381     0xA0, 0xA1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
0382     0xE8, 0xE9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,
0383     0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7,
0384     0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF,
0385     0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7,
0386     0xC8, 0xC9, 0xCA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
0387     0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7,
0388     0xD8, 0xD9, 0xDA, 0xFB, 0xFC, 0xFD, 0xFE, 0xDF,
0389     0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
0390     0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF,
0391     0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7,
0392     0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
0393 };
0394 
0395 EXPORT_SYMBOL(_ascebc_500);
0396 EXPORT_SYMBOL(_ebcasc_500);
0397 EXPORT_SYMBOL(_ascebc);
0398 EXPORT_SYMBOL(_ebcasc);
0399 EXPORT_SYMBOL(_ebc_tolower);
0400 EXPORT_SYMBOL(_ebc_toupper);
0401