~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/asm-s390/ebcdic.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  *  include/asm-s390/ebcdic.h
  3  *    EBCDIC -> ASCII, ASCII -> EBCDIC conversion routines.
  4  *
  5  *  S390 version
  6  *    Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
  7  *    Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
  8  */
  9 
 10 #ifndef _EBCDIC_H
 11 #define _EBCDIC_H
 12 
 13 #ifndef _S390_TYPES_H
 14 #include <types.h>
 15 #endif
 16 
 17 extern __u8 _ascebc[];   /* ASCII -> EBCDIC conversion table */
 18 extern __u8 _ebcasc[];   /* EBCDIC -> ASCII conversion table */
 19 extern __u8 _ebc_tolower[]; /* EBCDIC -> lowercase */
 20 extern __u8 _ebc_toupper[]; /* EBCDIC -> uppercase */
 21 
 22 extern __inline__ 
 23 void codepage_convert(const __u8 *codepage, volatile __u8 * addr, int nr)
 24 {
 25         static const __u16 tr_op[] = { 0xDC00, 0x1000,0x3000 };
 26         __asm__ __volatile__(
 27                 "   lr    1,%0\n"
 28                 "   lr    2,%1\n"
 29                 "   lr    3,%2\n"
 30                 "   ahi   2,-256\n"
 31                 "   jm    1f\n"
 32                 "0: tr    0(256,1),0(3)\n"
 33                 "   ahi   1,256\n"
 34                 "   ahi   2,-256\n"
 35                 "   jp    0b\n"
 36                 "1: ahi   2,255\n"
 37                 "   jm    2f\n"
 38                 "   ex    2,%3\n"
 39                 "2:"
 40                 : /* no output */ 
 41                 : "a" (addr), "d" (nr), "a" (codepage), "m" (tr_op[0])
 42                 : "cc", "memory", "1", "2", "3" );
 43 }
 44 
 45 #define ASCEBC(addr,nr) codepage_convert(_ascebc, addr, nr)
 46 #define EBCASC(addr,nr) codepage_convert(_ebcasc, addr, nr)
 47 #define EBC_TOLOWER(addr,nr) codepage_convert(_ebc_tolower, addr, nr)
 48 #define EBC_TOUPPER(addr,nr) codepage_convert(_ebc_toupper, addr, nr)
 49 
 50 #endif
 51 
 52 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.