Mercurial > hvf > hvf-old
view include/ebcdic.h @ 518:0c08f7d478d2
lib: added ASCII uppercase translation table
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Mon, 25 Apr 2011 14:43:58 -0400 |
parents | 00b487fbf5d7 |
children |
line wrap: on
line source
/* * (C) Copyright 2007-2011 Josef 'Jeff' Sipek <jeffpc@josefsipek.net> * * This file is released under the GPLv2. See the COPYING file for more * details. */ #ifndef __EBCDIC_H #define __EBCDIC_H /* charset conversions */ extern u8 ascii2ebcdic_table[256]; extern u8 ebcdic2ascii_table[256]; /* ASCII transforms */ extern u8 ascii2upper_table[256]; /* * Generic translate buffer function. */ static inline void __translate(u8 *buf, int len, const u8 *table) { asm volatile( " sgr %%r0,%%r0\n" /* test byte = 0 */ " la %%r2,0(%0)\n" /* buffer */ " lgr %%r3,%2\n" /* length */ " la %%r4,0(%1)\n" /* table */ "0: tre %%r2,%%r4\n" " brc 1,0b\n" : /* output */ : /* input */ "a" (buf), "a" (table), "d" (len) : /* clobbered */ "cc", "r0", "r2", "r3", "r4" ); } #define ascii2ebcdic(buf, len) \ __translate((buf), (len), ascii2ebcdic_table) #define ebcdic2ascii(buf, len) \ __translate((buf), (len), ebcdic2ascii_table) #define ascii2upper(buf, len) \ __translate((buf), (len), ascii2upper_table) #endif