[PATCH] Hex digits consolidation

From: Masoud Sharbiani <masouds@masoud.ir>

The following patch consolidates all definitions of hex digits in ASCII chars
in one place. For some reason, size of vmlinux increases by 791 bytes. Both
images were 2.6.14-rc4 based. Both of them were complied on the same machine,
with their .config being made from 'make allyesconfig.'

[root@dual masouds]# ls {proving-ground,clean}/linux-2.6/vmlinux -l
-rwxrwxr-x  1 masouds masouds 230138211 Oct 11 15:00 clean/linux-2.6/vmlinux
-rwxrwxr-x  1 masouds masouds 230138992 Oct 11 15:57 proving-ground/linux-2.6/vmlinux

IMHO, the second one should have been smaller, but it isn't.
However, bzImage sizes are as follows:

[root@dual masouds]# ls {proving-ground,clean}/linux-2.6/arch/i386/boot/bzImage -l
-rw-rw-r--  1 masouds masouds 12350891 Oct 11 15:00 clean/linux-2.6/arch/i386/boot/bzImage
-rw-rw-r--  1 masouds masouds 12350627 Oct 11 15:57 proving-ground/linux-2.6/arch/i386/boot/bzImage

I'd appreciate if someone clears this up for me.

Signed-off-by: Masoud A Sharbiani  <masouds@masoud.ir>
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>

Index: linux-kj/arch/cris/arch-v10/kernel/kgdb.c
===================================================================
--- linux-kj.orig/arch/cris/arch-v10/kernel/kgdb.c	2005-12-05 13:20:07.000000000 +0300
+++ linux-kj/arch/cris/arch-v10/kernel/kgdb.c	2005-12-05 13:20:09.000000000 +0300
@@ -415,7 +415,6 @@ extern unsigned char executing_task;
 #define RUNLENMAX 64
 
 /* Definition of all valid hexadecimal characters */
-static const char hexchars[] = "0123456789abcdef";
 
 /* The inbound/outbound buffers used in packet I/O */
 static char remcomInBuffer[BUFMAX];
@@ -557,8 +556,8 @@ gdb_cris_strtol (const char *s, char **e
 	char *sd;
 	int x = 0;
 	
-	for (s1 = (char*)s; (sd = gdb_cris_memchr(hexchars, *s1, base)) != NULL; ++s1)
-		x = x * base + (sd - hexchars);
+	for (s1 = (char*)s; (sd = gdb_cris_memchr(small_digits, *s1, base)) != NULL; ++s1)
+		x = x * base + (sd - small_digits);
         
         if (endptr)
         {
Index: linux-kj/arch/cris/arch-v32/kernel/kgdb.c
===================================================================
--- linux-kj.orig/arch/cris/arch-v32/kernel/kgdb.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/arch/cris/arch-v32/kernel/kgdb.c	2005-12-05 13:20:09.000000000 +0300
@@ -465,7 +465,6 @@ void breakpoint(void);
 #define RUNLENMAX 64
 
 /* Definition of all valid hexadecimal characters */
-static const char hexchars[] = "0123456789abcdef";
 
 /* The inbound/outbound buffers used in packet I/O */
 static char input_buffer[BUFMAX];
@@ -550,8 +549,8 @@ gdb_cris_strtol(const char *s, char **en
 	char *sd;
 	int x = 0;
 
-	for (s1 = (char*)s; (sd = gdb_cris_memchr(hexchars, *s1, base)) != NULL; ++s1)
-		x = x * base + (sd - hexchars);
+	for (s1 = (char*)s; (sd = gdb_cris_memchr(small_digits, *s1, base)) != NULL; ++s1)
+		x = x * base + (sd - small_digits);
 
         if (endptr) {
                 /* Unconverted suffix is stored in endptr unless endptr is NULL. */
@@ -660,7 +659,7 @@ read_register(char regno, unsigned int *
 static inline char
 highhex(int x)
 {
-	return hexchars[(x >> 4) & 0xf];
+	return small_digits[(x >> 4) & 0xf];
 }
 
 /* Returns the character equivalent of a nibble, bit 3, 2, 1, and 0 of a byte,
@@ -668,7 +667,7 @@ highhex(int x)
 static inline char
 lowhex(int x)
 {
-	return hexchars[x & 0xf];
+	return small_digits[x & 0xf];
 }
 
 /* Returns the integer equivalent of a hexadecimal character. */
Index: linux-kj/arch/frv/kernel/gdb-stub.c
===================================================================
--- linux-kj.orig/arch/frv/kernel/gdb-stub.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/arch/frv/kernel/gdb-stub.c	2005-12-05 13:20:09.000000000 +0300
@@ -182,8 +182,6 @@ extern volatile u32 __attribute__((secti
 static char	input_buffer[BUFMAX];
 static char	output_buffer[BUFMAX];
 
-static const char hexchars[] = "0123456789abcdef";
-
 static const char *regnames[] = {
 	"PSR ", "ISR ", "CCR ", "CCCR",
 	"LR  ", "LCR ", "PC  ", "_stt",
@@ -383,8 +381,8 @@ static int gdbstub_send_packet(char *buf
 		}
 
 		gdbstub_tx_char('#');
-		gdbstub_tx_char(hexchars[checksum >> 4]);
-		gdbstub_tx_char(hexchars[checksum & 0xf]);
+		gdbstub_tx_char(small_digits[checksum >> 4]);
+		gdbstub_tx_char(small_digits[checksum & 0xf]);
 
 	} while (gdbstub_rx_char(&ch,0),
 #ifdef GDBSTUB_DEBUG_PROTOCOL
@@ -680,8 +678,8 @@ static unsigned char *mem2hex(const void
 	if ((uint32_t)mem&1 && count>=1) {
 		if (!gdbstub_read_byte(mem,ch))
 			return NULL;
-		*buf++ = hexchars[ch[0] >> 4];
-		*buf++ = hexchars[ch[0] & 0xf];
+		*buf++ = small_digits[ch[0] >> 4];
+		*buf++ = small_digits[ch[0] & 0xf];
 		mem++;
 		count--;
 	}
@@ -689,10 +687,10 @@ static unsigned char *mem2hex(const void
 	if ((uint32_t)mem&3 && count>=2) {
 		if (!gdbstub_read_word(mem,(uint16_t *)ch))
 			return NULL;
-		*buf++ = hexchars[ch[0] >> 4];
-		*buf++ = hexchars[ch[0] & 0xf];
-		*buf++ = hexchars[ch[1] >> 4];
-		*buf++ = hexchars[ch[1] & 0xf];
+		*buf++ = small_digits[ch[0] >> 4];
+		*buf++ = small_digits[ch[0] & 0xf];
+		*buf++ = small_digits[ch[1] >> 4];
+		*buf++ = small_digits[ch[1] & 0xf];
 		mem += 2;
 		count -= 2;
 	}
@@ -700,14 +698,14 @@ static unsigned char *mem2hex(const void
 	while (count>=4) {
 		if (!gdbstub_read_dword(mem,(uint32_t *)ch))
 			return NULL;
-		*buf++ = hexchars[ch[0] >> 4];
-		*buf++ = hexchars[ch[0] & 0xf];
-		*buf++ = hexchars[ch[1] >> 4];
-		*buf++ = hexchars[ch[1] & 0xf];
-		*buf++ = hexchars[ch[2] >> 4];
-		*buf++ = hexchars[ch[2] & 0xf];
-		*buf++ = hexchars[ch[3] >> 4];
-		*buf++ = hexchars[ch[3] & 0xf];
+		*buf++ = small_digits[ch[0] >> 4];
+		*buf++ = small_digits[ch[0] & 0xf];
+		*buf++ = small_digits[ch[1] >> 4];
+		*buf++ = small_digits[ch[1] & 0xf];
+		*buf++ = small_digits[ch[2] >> 4];
+		*buf++ = small_digits[ch[2] & 0xf];
+		*buf++ = small_digits[ch[3] >> 4];
+		*buf++ = small_digits[ch[3] & 0xf];
 		mem += 4;
 		count -= 4;
 	}
@@ -715,10 +713,10 @@ static unsigned char *mem2hex(const void
 	if (count>=2) {
 		if (!gdbstub_read_word(mem,(uint16_t *)ch))
 			return NULL;
-		*buf++ = hexchars[ch[0] >> 4];
-		*buf++ = hexchars[ch[0] & 0xf];
-		*buf++ = hexchars[ch[1] >> 4];
-		*buf++ = hexchars[ch[1] & 0xf];
+		*buf++ = small_digits[ch[0] >> 4];
+		*buf++ = small_digits[ch[0] & 0xf];
+		*buf++ = small_digits[ch[1] >> 4];
+		*buf++ = small_digits[ch[1] & 0xf];
 		mem += 2;
 		count -= 2;
 	}
@@ -726,8 +724,8 @@ static unsigned char *mem2hex(const void
 	if (count>=1) {
 		if (!gdbstub_read_byte(mem,ch))
 			return NULL;
-		*buf++ = hexchars[ch[0] >> 4];
-		*buf++ = hexchars[ch[0] & 0xf];
+		*buf++ = small_digits[ch[0] >> 4];
+		*buf++ = small_digits[ch[0] & 0xf];
 	}
 
 	*buf = 0;
@@ -1448,22 +1446,22 @@ void gdbstub(int sigval)
 		*ptr++ = 'O';
 		ptr = mem2hex(title, ptr, sizeof(title) - 1,0);
 
-		hx = hexchars[(brr & 0xf0000000) >> 28];
-		*ptr++ = hexchars[hx >> 4];	*ptr++ = hexchars[hx & 0xf];
-		hx = hexchars[(brr & 0x0f000000) >> 24];
-		*ptr++ = hexchars[hx >> 4];	*ptr++ = hexchars[hx & 0xf];
-		hx = hexchars[(brr & 0x00f00000) >> 20];
-		*ptr++ = hexchars[hx >> 4];	*ptr++ = hexchars[hx & 0xf];
-		hx = hexchars[(brr & 0x000f0000) >> 16];
-		*ptr++ = hexchars[hx >> 4];	*ptr++ = hexchars[hx & 0xf];
-		hx = hexchars[(brr & 0x0000f000) >> 12];
-		*ptr++ = hexchars[hx >> 4];	*ptr++ = hexchars[hx & 0xf];
-		hx = hexchars[(brr & 0x00000f00) >> 8];
-		*ptr++ = hexchars[hx >> 4];	*ptr++ = hexchars[hx & 0xf];
-		hx = hexchars[(brr & 0x000000f0) >> 4];
-		*ptr++ = hexchars[hx >> 4];	*ptr++ = hexchars[hx & 0xf];
-		hx = hexchars[(brr & 0x0000000f)];
-		*ptr++ = hexchars[hx >> 4];	*ptr++ = hexchars[hx & 0xf];
+		hx = small_digits[(brr & 0xf0000000) >> 28];
+		*ptr++ = small_digits[hx >> 4];	*ptr++ = small_digits[hx & 0xf];
+		hx = small_digits[(brr & 0x0f000000) >> 24];
+		*ptr++ = small_digits[hx >> 4];	*ptr++ = small_digits[hx & 0xf];
+		hx = small_digits[(brr & 0x00f00000) >> 20];
+		*ptr++ = small_digits[hx >> 4];	*ptr++ = small_digits[hx & 0xf];
+		hx = small_digits[(brr & 0x000f0000) >> 16];
+		*ptr++ = small_digits[hx >> 4];	*ptr++ = small_digits[hx & 0xf];
+		hx = small_digits[(brr & 0x0000f000) >> 12];
+		*ptr++ = small_digits[hx >> 4];	*ptr++ = small_digits[hx & 0xf];
+		hx = small_digits[(brr & 0x00000f00) >> 8];
+		*ptr++ = small_digits[hx >> 4];	*ptr++ = small_digits[hx & 0xf];
+		hx = small_digits[(brr & 0x000000f0) >> 4];
+		*ptr++ = small_digits[hx >> 4];	*ptr++ = small_digits[hx & 0xf];
+		hx = small_digits[(brr & 0x0000000f)];
+		*ptr++ = small_digits[hx >> 4];	*ptr++ = small_digits[hx & 0xf];
 
 		ptr = mem2hex(crlf, ptr, sizeof(crlf) - 1, 0);
 		*ptr = 0;
@@ -1477,12 +1475,12 @@ void gdbstub(int sigval)
 
 	/* Send trap type (converted to signal) */
 	*ptr++ = 'T';
-	*ptr++ = hexchars[sigval >> 4];
-	*ptr++ = hexchars[sigval & 0xf];
+	*ptr++ = small_digits[sigval >> 4];
+	*ptr++ = small_digits[sigval & 0xf];
 
 	/* Send Error PC */
-	*ptr++ = hexchars[GDB_REG_PC >> 4];
-	*ptr++ = hexchars[GDB_REG_PC & 0xf];
+	*ptr++ = small_digits[GDB_REG_PC >> 4];
+	*ptr++ = small_digits[GDB_REG_PC & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex(&__debug_frame->pc, ptr, 4, 0);
 	*ptr++ = ';';
@@ -1490,8 +1488,8 @@ void gdbstub(int sigval)
 	/*
 	 * Send frame pointer
 	 */
-	*ptr++ = hexchars[GDB_REG_FP >> 4];
-	*ptr++ = hexchars[GDB_REG_FP & 0xf];
+	*ptr++ = small_digits[GDB_REG_FP >> 4];
+	*ptr++ = small_digits[GDB_REG_FP & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex(&__debug_frame->fp, ptr, 4, 0);
 	*ptr++ = ';';
@@ -1499,8 +1497,8 @@ void gdbstub(int sigval)
 	/*
 	 * Send stack pointer
 	 */
-	*ptr++ = hexchars[GDB_REG_SP >> 4];
-	*ptr++ = hexchars[GDB_REG_SP & 0xf];
+	*ptr++ = small_digits[GDB_REG_SP >> 4];
+	*ptr++ = small_digits[GDB_REG_SP & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex(&__debug_frame->sp, ptr, 4, 0);
 	*ptr++ = ';';
@@ -1525,8 +1523,8 @@ void gdbstub(int sigval)
 			/* request repeat of last signal number */
 		case '?':
 			output_buffer[0] = 'S';
-			output_buffer[1] = hexchars[sigval >> 4];
-			output_buffer[2] = hexchars[sigval & 0xf];
+			output_buffer[1] = small_digits[sigval >> 4];
+			output_buffer[2] = small_digits[sigval & 0xf];
 			output_buffer[3] = 0;
 			break;
 
@@ -2044,8 +2042,8 @@ void gdbstub_exit(int status)
 	}
 
 	gdbstub_tx_char('#');
-	gdbstub_tx_char(hexchars[checksum >> 4]);
-	gdbstub_tx_char(hexchars[checksum & 0xf]);
+	gdbstub_tx_char(small_digits[checksum >> 4]);
+	gdbstub_tx_char(small_digits[checksum & 0xf]);
 
 	/* make sure the output is flushed, or else RedBoot might clobber it */
 	gdbstub_tx_char('-');
Index: linux-kj/arch/mips/galileo-boards/ev96100/puts.c
===================================================================
--- linux-kj.orig/arch/mips/galileo-boards/ev96100/puts.c	2005-12-05 13:17:41.000000000 +0300
+++ linux-kj/arch/mips/galileo-boards/ev96100/puts.c	2005-12-05 13:20:09.000000000 +0300
@@ -21,7 +21,6 @@
 #define TIMEOUT    0xffff
 #undef SLOW_DOWN
 
-static const char digits[16] = "0123456789abcdef";
 static volatile unsigned char *const com1 = (unsigned char *) SERIAL_BASE;
 
 
@@ -118,7 +117,7 @@ void put64(uint64_t ul)
 	do {
 		cnt--;
 		ch = (unsigned char) (ul >> cnt * 4) & 0x0F;
-		putch(digits[ch]);
+		putch(small_digits[ch]);
 	} while (cnt > 0);
 }
 
@@ -133,6 +132,6 @@ void put32(unsigned u)
 	do {
 		cnt--;
 		ch = (unsigned char) (u >> cnt * 4) & 0x0F;
-		putch(digits[ch]);
+		putch(small_digits[ch]);
 	} while (cnt > 0);
 }
Index: linux-kj/arch/mips/ite-boards/generic/puts.c
===================================================================
--- linux-kj.orig/arch/mips/ite-boards/generic/puts.c	2005-12-05 13:17:41.000000000 +0300
+++ linux-kj/arch/mips/ite-boards/generic/puts.c	2005-12-05 13:20:09.000000000 +0300
@@ -38,7 +38,6 @@
 #define TIMEOUT       0xffff
 #undef SLOW_DOWN
 
-static const char digits[16] = "0123456789abcdef";
 static volatile unsigned char *const com1 = (unsigned char *) SERIAL_BASE;
 
 
@@ -119,7 +118,7 @@ void put64(uint64_t ul)
 	do {
 		cnt--;
 		ch = (unsigned char) (ul >> cnt * 4) & 0x0F;
-		putch(digits[ch]);
+		putch(small_digits[ch]);
 	} while (cnt > 0);
 }
 
@@ -134,6 +133,6 @@ void put32(unsigned u)
 	do {
 		cnt--;
 		ch = (unsigned char) (u >> cnt * 4) & 0x0F;
-		putch(digits[ch]);
+		putch(small_digits[ch]);
 	} while (cnt > 0);
 }
Index: linux-kj/arch/mips/jmr3927/common/puts.c
===================================================================
--- linux-kj.orig/arch/mips/jmr3927/common/puts.c	2005-12-05 13:17:41.000000000 +0300
+++ linux-kj/arch/mips/jmr3927/common/puts.c	2005-12-05 13:20:09.000000000 +0300
@@ -40,8 +40,6 @@
 #define TIMEOUT       0xffffff
 #define SLOW_DOWN
 
-static const char digits[16] = "0123456789abcdef";
-
 #ifdef SLOW_DOWN
 #define slow_down() { int k; for (k=0; k<10000; k++); }
 #else
@@ -147,7 +145,7 @@ put64(uint64_t ul)
     do {
         cnt--;
         ch = (unsigned char)(ul >> cnt * 4) & 0x0F;
-                putch(digits[ch]);
+                putch(small_digits[ch]);
     } while (cnt > 0);
 }
 
@@ -163,6 +161,6 @@ put32(unsigned u)
     do {
         cnt--;
         ch = (unsigned char)(u >> cnt * 4) & 0x0F;
-                putch(digits[ch]);
+                putch(small_digits[ch]);
     } while (cnt > 0);
 }
Index: linux-kj/arch/mips/jmr3927/rbhma3100/kgdb_io.c
===================================================================
--- linux-kj.orig/arch/mips/jmr3927/rbhma3100/kgdb_io.c	2005-12-05 13:17:41.000000000 +0300
+++ linux-kj/arch/mips/jmr3927/rbhma3100/kgdb_io.c	2005-12-05 13:20:09.000000000 +0300
@@ -39,8 +39,6 @@
 #define TIMEOUT       0xffffff
 #define SLOW_DOWN
 
-static const char digits[16] = "0123456789abcdef";
-
 #ifdef SLOW_DOWN
 #define slow_down() { int k; for (k=0; k<10000; k++); }
 #else
Index: linux-kj/arch/mips/kernel/gdb-stub.c
===================================================================
--- linux-kj.orig/arch/mips/kernel/gdb-stub.c	2005-12-05 13:17:41.000000000 +0300
+++ linux-kj/arch/mips/kernel/gdb-stub.c	2005-12-05 13:20:09.000000000 +0300
@@ -191,7 +191,6 @@ static char input_buffer[BUFMAX];
 static char output_buffer[BUFMAX];
 static int initialized;	/* !0 means we've been initialized */
 static int kgdb_started;
-static const char hexchars[]="0123456789abcdef";
 
 /* Used to prevent crashes in memory access.  Note that they'll crash anyway if
    we haven't set up fault handlers yet... */
@@ -307,8 +306,8 @@ static void putpacket(char *buffer)
 		}
 
 		putDebugChar('#');
-		putDebugChar(hexchars[checksum >> 4]);
-		putDebugChar(hexchars[checksum & 0xf]);
+		putDebugChar(small_digits[checksum >> 4]);
+		putDebugChar(small_digits[checksum & 0xf]);
 
 	}
 	while ((getDebugChar() & 0x7f) != '+');
@@ -329,8 +328,8 @@ static unsigned char *mem2hex(char *mem,
 	while (count-- > 0) {
 		if (kgdb_read_byte(mem++, &ch) != 0)
 			return 0;
-		*buf++ = hexchars[ch >> 4];
-		*buf++ = hexchars[ch & 0xf];
+		*buf++ = small_digits[ch >> 4];
+		*buf++ = small_digits[ch & 0xf];
 	}
 
 	*buf = 0;
@@ -753,14 +752,14 @@ void handle_exception (struct gdb_regs *
 	 * Send trap type (converted to signal)
 	 */
 	*ptr++ = 'T';
-	*ptr++ = hexchars[sigval >> 4];
-	*ptr++ = hexchars[sigval & 0xf];
+	*ptr++ = small_digits[sigval >> 4];
+	*ptr++ = small_digits[sigval & 0xf];
 
 	/*
 	 * Send Error PC
 	 */
-	*ptr++ = hexchars[REG_EPC >> 4];
-	*ptr++ = hexchars[REG_EPC & 0xf];
+	*ptr++ = small_digits[REG_EPC >> 4];
+	*ptr++ = small_digits[REG_EPC & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex((char *)&regs->cp0_epc, ptr, sizeof(long), 0);
 	*ptr++ = ';';
@@ -768,8 +767,8 @@ void handle_exception (struct gdb_regs *
 	/*
 	 * Send frame pointer
 	 */
-	*ptr++ = hexchars[REG_FP >> 4];
-	*ptr++ = hexchars[REG_FP & 0xf];
+	*ptr++ = small_digits[REG_FP >> 4];
+	*ptr++ = small_digits[REG_FP & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex((char *)&regs->reg30, ptr, sizeof(long), 0);
 	*ptr++ = ';';
@@ -777,8 +776,8 @@ void handle_exception (struct gdb_regs *
 	/*
 	 * Send stack pointer
 	 */
-	*ptr++ = hexchars[REG_SP >> 4];
-	*ptr++ = hexchars[REG_SP & 0xf];
+	*ptr++ = small_digits[REG_SP >> 4];
+	*ptr++ = small_digits[REG_SP & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex((char *)&regs->reg29, ptr, sizeof(long), 0);
 	*ptr++ = ';';
@@ -797,8 +796,8 @@ void handle_exception (struct gdb_regs *
 		{
 		case '?':
 			output_buffer[0] = 'S';
-			output_buffer[1] = hexchars[sigval >> 4];
-			output_buffer[2] = hexchars[sigval & 0xf];
+			output_buffer[1] = small_digits[sigval >> 4];
+			output_buffer[2] = small_digits[sigval & 0xf];
 			output_buffer[3] = 0;
 			break;
 
Index: linux-kj/arch/ppc/boot/common/misc-common.c
===================================================================
--- linux-kj.orig/arch/ppc/boot/common/misc-common.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/arch/ppc/boot/common/misc-common.c	2005-12-05 13:20:09.000000000 +0300
@@ -280,7 +280,7 @@ puthex(unsigned long val)
 	int i;
 	for (i = 7;  i >= 0;  i--)
 	{
-		buf[i] = "0123456789ABCDEF"[val & 0x0F];
+		buf[i] = large_digits[val & 0x0F];
 		val >>= 4;
 	}
 	buf[8] = '\0';
@@ -362,13 +362,13 @@ _vprintk(void(*putc)(const char), const 
 						sign = '-';
 						val = -val;
 					}
-					length = _cvt(val, buf, 10, "0123456789");
+					length = _cvt(val, buf, 10, small_digits);
 					break;
 				case 'x':
-					length = _cvt(val, buf, 16, "0123456789abcdef");
+					length = _cvt(val, buf, 16, small_digits);
 					break;
 				case 'X':
-					length = _cvt(val, buf, 16, "0123456789ABCDEF");
+					length = _cvt(val, buf, 16, large_digits);
 					break;
 				}
 				cp = buf;
@@ -450,7 +450,7 @@ _cvt(unsigned long val, char *buf, long 
 	} else
 		while (val)
 		{
-			*cp++ = digits[val % radix];
+			*cp++ = small_digits[val % radix];
 			val /= radix;
 		}
 	while (cp != temp)
Index: linux-kj/arch/ppc/kernel/ppc-stub.c
===================================================================
--- linux-kj.orig/arch/ppc/kernel/ppc-stub.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/arch/ppc/kernel/ppc-stub.c	2005-12-05 13:20:09.000000000 +0300
@@ -132,7 +132,6 @@ static u_int fault_jmp_buf[100];
 static int kdebug;
 
 
-static const char hexchars[]="0123456789abcdef";
 
 /* Place where we save old trap entries for restoration - sparc*/
 /* struct tt_entry kgdb_savettable[256]; */
@@ -206,28 +205,28 @@ mem2hex(const char *mem, char *buf, int 
 		if ((count == 2) && (((long)mem & 1) == 0)) {
 			tmp_s = *(unsigned short *)mem;
 			mem += 2;
-			*buf++ = hexchars[(tmp_s >> 12) & 0xf];
-			*buf++ = hexchars[(tmp_s >> 8) & 0xf];
-			*buf++ = hexchars[(tmp_s >> 4) & 0xf];
-			*buf++ = hexchars[tmp_s & 0xf];
+			*buf++ = small_digits[(tmp_s >> 12) & 0xf];
+			*buf++ = small_digits[(tmp_s >> 8) & 0xf];
+			*buf++ = small_digits[(tmp_s >> 4) & 0xf];
+			*buf++ = small_digits[tmp_s & 0xf];
 
 		} else if ((count == 4) && (((long)mem & 3) == 0)) {
 			tmp_l = *(unsigned int *)mem;
 			mem += 4;
-			*buf++ = hexchars[(tmp_l >> 28) & 0xf];
-			*buf++ = hexchars[(tmp_l >> 24) & 0xf];
-			*buf++ = hexchars[(tmp_l >> 20) & 0xf];
-			*buf++ = hexchars[(tmp_l >> 16) & 0xf];
-			*buf++ = hexchars[(tmp_l >> 12) & 0xf];
-			*buf++ = hexchars[(tmp_l >> 8) & 0xf];
-			*buf++ = hexchars[(tmp_l >> 4) & 0xf];
-			*buf++ = hexchars[tmp_l & 0xf];
+			*buf++ = small_digits[(tmp_l >> 28) & 0xf];
+			*buf++ = small_digits[(tmp_l >> 24) & 0xf];
+			*buf++ = small_digits[(tmp_l >> 20) & 0xf];
+			*buf++ = small_digits[(tmp_l >> 16) & 0xf];
+			*buf++ = small_digits[(tmp_l >> 12) & 0xf];
+			*buf++ = small_digits[(tmp_l >> 8) & 0xf];
+			*buf++ = small_digits[(tmp_l >> 4) & 0xf];
+			*buf++ = small_digits[tmp_l & 0xf];
 
 		} else {
 			while (count-- > 0) {
 				ch = *mem++;
-				*buf++ = hexchars[ch >> 4];
-				*buf++ = hexchars[ch & 0xf];
+				*buf++ = small_digits[ch >> 4];
+				*buf++ = small_digits[ch & 0xf];
 			}
 		}
 
@@ -412,8 +411,8 @@ static void putpacket(unsigned char *buf
 		}
 
 		putDebugChar('#');
-		putDebugChar(hexchars[checksum >> 4]);
-		putDebugChar(hexchars[checksum & 0xf]);
+		putDebugChar(small_digits[checksum >> 4]);
+		putDebugChar(small_digits[checksum & 0xf]);
 		recv = getDebugChar();
 	} while ((recv & 0x7f) != '+');
 }
@@ -603,15 +602,15 @@ handle_exception (struct pt_regs *regs)
 	ptr = remcomOutBuffer;
 
 	*ptr++ = 'T';
-	*ptr++ = hexchars[sigval >> 4];
-	*ptr++ = hexchars[sigval & 0xf];
-	*ptr++ = hexchars[PC_REGNUM >> 4];
-	*ptr++ = hexchars[PC_REGNUM & 0xf];
+	*ptr++ = small_digits[sigval >> 4];
+	*ptr++ = small_digits[sigval & 0xf];
+	*ptr++ = small_digits[PC_REGNUM >> 4];
+	*ptr++ = small_digits[PC_REGNUM & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex((char *)&regs->nip, ptr, 4);
 	*ptr++ = ';';
-	*ptr++ = hexchars[SP_REGNUM >> 4];
-	*ptr++ = hexchars[SP_REGNUM & 0xf];
+	*ptr++ = small_digits[SP_REGNUM >> 4];
+	*ptr++ = small_digits[SP_REGNUM & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex(((char *)regs) + SP_REGNUM*4, ptr, 4);
 	*ptr++ = ';';
@@ -633,8 +632,8 @@ handle_exception (struct pt_regs *regs)
 		switch (remcomInBuffer[0]) {
 		case '?': /* report most recent signal */
 			remcomOutBuffer[0] = 'S';
-			remcomOutBuffer[1] = hexchars[sigval >> 4];
-			remcomOutBuffer[2] = hexchars[sigval & 0xf];
+			remcomOutBuffer[1] = small_digits[sigval >> 4];
+			remcomOutBuffer[2] = small_digits[sigval & 0xf];
 			remcomOutBuffer[3] = 0;
 			break;
 #if 0
Index: linux-kj/arch/ppc/kernel/process.c
===================================================================
--- linux-kj.orig/arch/ppc/kernel/process.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/arch/ppc/kernel/process.c	2005-12-05 13:20:09.000000000 +0300
@@ -765,7 +765,7 @@ void puthex(unsigned long val)
 	int i;
 	for (i = 7;  i >= 0;  i--)
 	{
-		buf[i] = "0123456789ABCDEF"[val & 0x0F];
+		buf[i] = large_digits[val & 0x0F];
 		val >>= 4;
 	}
 	buf[8] = '\0';
Index: linux-kj/arch/ppc/platforms/apus_setup.c
===================================================================
--- linux-kj.orig/arch/ppc/platforms/apus_setup.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/arch/ppc/platforms/apus_setup.c	2005-12-05 13:20:09.000000000 +0300
@@ -627,10 +627,9 @@ int __debug_serinit( void )
 void __debug_print_hex(unsigned long x)
 {
 	int i;
-	char hexchars[] = "0123456789ABCDEF";
 
 	for (i = 0; i < 8; i++) {
-		__debug_ser_out(hexchars[(x >> 28) & 15]);
+		__debug_ser_out(large_digits[(x >> 28) & 15]);
 		x <<= 4;
 	}
 	__debug_ser_out('\n');
Index: linux-kj/arch/ppc/platforms/residual.c
===================================================================
--- linux-kj.orig/arch/ppc/platforms/residual.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/arch/ppc/platforms/residual.c	2005-12-05 13:20:09.000000000 +0300
@@ -770,15 +770,14 @@ static int __init same_DevID(unsigned sh
 	       unsigned short Number,
 	       char * str)
 {
-	static unsigned const char hexdigit[]="0123456789ABCDEF";
 	if (strlen(str)!=7) return 0;
 	if ( ( ((vendor>>10)&0x1f)+'A'-1 == str[0])  &&
 	     ( ((vendor>>5)&0x1f)+'A'-1 == str[1])   &&
 	     ( (vendor&0x1f)+'A'-1 == str[2])        &&
-	     (hexdigit[(Number>>12)&0x0f] == str[3]) &&
-	     (hexdigit[(Number>>8)&0x0f] == str[4])  &&
-	     (hexdigit[(Number>>4)&0x0f] == str[5])  &&
-	     (hexdigit[Number&0x0f] == str[6]) ) return 1;
+	     (large_digits[(Number>>12)&0x0f] == str[3]) &&
+	     (large_digits[(Number>>8)&0x0f] == str[4])  &&
+	     (large_digits[(Number>>4)&0x0f] == str[5])  &&
+	     (large_digits[Number&0x0f] == str[6]) ) return 1;
 	return 0;
 }
 
Index: linux-kj/arch/ppc/syslib/btext.c
===================================================================
--- linux-kj.orig/arch/ppc/syslib/btext.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/arch/ppc/syslib/btext.c	2005-12-05 13:20:09.000000000 +0300
@@ -392,18 +392,17 @@ btext_drawstring(const char *c)
 void BTEXT
 btext_drawhex(unsigned long v)
 {
-	static char hex_table[] = "0123456789abcdef";
 
 	if (!boot_text_mapped)
 		return;
-	btext_drawchar(hex_table[(v >> 28) & 0x0000000FUL]);
-	btext_drawchar(hex_table[(v >> 24) & 0x0000000FUL]);
-	btext_drawchar(hex_table[(v >> 20) & 0x0000000FUL]);
-	btext_drawchar(hex_table[(v >> 16) & 0x0000000FUL]);
-	btext_drawchar(hex_table[(v >> 12) & 0x0000000FUL]);
-	btext_drawchar(hex_table[(v >>  8) & 0x0000000FUL]);
-	btext_drawchar(hex_table[(v >>  4) & 0x0000000FUL]);
-	btext_drawchar(hex_table[(v >>  0) & 0x0000000FUL]);
+	btext_drawchar(small_digits[(v >> 28) & 0x0000000FUL]);
+	btext_drawchar(small_digits[(v >> 24) & 0x0000000FUL]);
+	btext_drawchar(small_digits[(v >> 20) & 0x0000000FUL]);
+	btext_drawchar(small_digits[(v >> 16) & 0x0000000FUL]);
+	btext_drawchar(small_digits[(v >> 12) & 0x0000000FUL]);
+	btext_drawchar(small_digits[(v >>  8) & 0x0000000FUL]);
+	btext_drawchar(small_digits[(v >>  4) & 0x0000000FUL]);
+	btext_drawchar(small_digits[(v >>  0) & 0x0000000FUL]);
 	btext_drawchar(' ');
 }
 
Index: linux-kj/arch/sh/kernel/kgdb_stub.c
===================================================================
--- linux-kj.orig/arch/sh/kernel/kgdb_stub.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/arch/sh/kernel/kgdb_stub.c	2005-12-05 13:20:09.000000000 +0300
@@ -240,7 +240,6 @@ static jmp_buf rem_com_env;
 /* Misc static */
 static int stepped_address;
 static short stepped_opcode;
-static const char hexchars[] = "0123456789abcdef";
 static char in_buffer[BUFMAX];
 static char out_buffer[OUTBUFMAX];
 
@@ -268,13 +267,13 @@ static inline void ctrl_outl(const unsig
 /* Get high hex bits */
 static char highhex(const int x)
 {
-	return hexchars[(x >> 4) & 0xf];
+	return small_digits[(x >> 4) & 0xf];
 }
 
 /* Get low hex bits */
 static char lowhex(const int x)
 {
-	return hexchars[x & 0xf];
+	return small_digits[x & 0xf];
 }
 
 /* Convert ch to hex */
@@ -367,8 +366,8 @@ static char *ebin_to_mem(const char *buf
 /* Pack a hex byte */
 static char *pack_hex_byte(char *pkt, int byte)
 {
-	*pkt++ = hexchars[(byte >> 4) & 0xf];
-	*pkt++ = hexchars[(byte & 0xf)];
+	*pkt++ = small_digits[(byte >> 4) & 0xf];
+	*pkt++ = small_digits[(byte & 0xf)];
 	return pkt;
 }
 
Index: linux-kj/arch/sparc/kernel/sparc-stub.c
===================================================================
--- linux-kj.orig/arch/sparc/kernel/sparc-stub.c	2005-12-05 13:17:45.000000000 +0300
+++ linux-kj/arch/sparc/kernel/sparc-stub.c	2005-12-05 13:20:09.000000000 +0300
@@ -127,8 +127,6 @@ extern char getDebugChar(void);   /* rea
 
 static int initialized;	/* !0 means we've been initialized */
 
-static const char hexchars[]="0123456789abcdef";
-
 #define NUMREGS 72
 
 /* Number of bytes of registers.  */
@@ -298,8 +296,8 @@ putpacket(unsigned char *buffer)
 		}
 
 		putDebugChar('#');
-		putDebugChar(hexchars[checksum >> 4]);
-		putDebugChar(hexchars[checksum & 0xf]);
+		putDebugChar(small_digits[checksum >> 4]);
+		putDebugChar(small_digits[checksum & 0xf]);
 		recv = getDebugChar();
 	} while ((recv & 0x7f) != '+');
 }
@@ -337,8 +335,8 @@ mem2hex(char *mem, char *buf, int count)
 			".word 1b, 2b\n\t"
 			".text\n"
 			: "=r" (mem), "=r" (ch) : "0" (mem));
-		*buf++ = hexchars[ch >> 4];
-		*buf++ = hexchars[ch & 0xf];
+		*buf++ = small_digits[ch >> 4];
+		*buf++ = small_digits[ch & 0xf];
 	}
 
 	*buf = 0;
@@ -527,35 +525,35 @@ handle_exception (unsigned long *registe
 	ptr = remcomOutBuffer;
 
 	*ptr++ = 'T';
-	*ptr++ = hexchars[sigval >> 4];
-	*ptr++ = hexchars[sigval & 0xf];
+	*ptr++ = small_digits[sigval >> 4];
+	*ptr++ = small_digits[sigval & 0xf];
 
-	*ptr++ = hexchars[PC >> 4];
-	*ptr++ = hexchars[PC & 0xf];
+	*ptr++ = small_digits[PC >> 4];
+	*ptr++ = small_digits[PC & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex((char *)&registers[PC], ptr, 4);
 	*ptr++ = ';';
 
-	*ptr++ = hexchars[FP >> 4];
-	*ptr++ = hexchars[FP & 0xf];
+	*ptr++ = small_digits[FP >> 4];
+	*ptr++ = small_digits[FP & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex((char *) (sp + 8 + 6), ptr, 4); /* FP */
 	*ptr++ = ';';
 
-	*ptr++ = hexchars[SP >> 4];
-	*ptr++ = hexchars[SP & 0xf];
+	*ptr++ = small_digits[SP >> 4];
+	*ptr++ = small_digits[SP & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex((char *)&sp, ptr, 4);
 	*ptr++ = ';';
 
-	*ptr++ = hexchars[NPC >> 4];
-	*ptr++ = hexchars[NPC & 0xf];
+	*ptr++ = small_digits[NPC >> 4];
+	*ptr++ = small_digits[NPC & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex((char *)&registers[NPC], ptr, 4);
 	*ptr++ = ';';
 
-	*ptr++ = hexchars[O7 >> 4];
-	*ptr++ = hexchars[O7 & 0xf];
+	*ptr++ = small_digits[O7 >> 4];
+	*ptr++ = small_digits[O7 & 0xf];
 	*ptr++ = ':';
 	ptr = mem2hex((char *)&registers[O7], ptr, 4);
 	*ptr++ = ';';
@@ -577,8 +575,8 @@ handle_exception (unsigned long *registe
 		switch (remcomInBuffer[0]) {
 		case '?':
 			remcomOutBuffer[0] = 'S';
-			remcomOutBuffer[1] = hexchars[sigval >> 4];
-			remcomOutBuffer[2] = hexchars[sigval & 0xf];
+			remcomOutBuffer[1] = small_digits[sigval >> 4];
+			remcomOutBuffer[2] = small_digits[sigval & 0xf];
 			remcomOutBuffer[3] = 0;
 			break;
 
Index: linux-kj/drivers/ide/ide.c
===================================================================
--- linux-kj.orig/drivers/ide/ide.c	2005-12-05 13:17:53.000000000 +0300
+++ linux-kj/drivers/ide/ide.c	2005-12-05 13:20:09.000000000 +0300
@@ -1441,8 +1441,6 @@ static int __init stridx (const char *s,
  */
 static int __init match_parm (char *s, const char *keywords[], int vals[], int max_vals)
 {
-	static const char *decimal = "0123456789";
-	static const char *hex = "0123456789abcdef";
 	int i, n;
 
 	if (*s++ == '=') {
@@ -1462,12 +1460,12 @@ static int __init match_parm (char *s, c
 		 * or base16 when prefixed with "0x".
 		 * Return a count of how many were found.
 		 */
-		for (n = 0; (i = stridx(decimal, *s)) >= 0;) {
+		for (n = 0; (i = stridx(small_digits, *s)) >= 0;) {
 			vals[n] = i;
-			while ((i = stridx(decimal, *++s)) >= 0)
+			while ((i = stridx(small_digits, *++s)) >= 0)
 				vals[n] = (vals[n] * 10) + i;
 			if (*s == 'x' && !vals[n]) {
-				while ((i = stridx(hex, *++s)) >= 0)
+				while ((i = stridx(small_digits, *++s)) >= 0)
 					vals[n] = (vals[n] * 0x10) + i;
 			}
 			if (++n == max_vals)
Index: linux-kj/drivers/isdn/isdnloop/isdnloop.c
===================================================================
--- linux-kj.orig/drivers/isdn/isdnloop/isdnloop.c	2005-12-05 13:18:00.000000000 +0300
+++ linux-kj/drivers/isdn/isdnloop/isdnloop.c	2005-12-05 13:20:09.000000000 +0300
@@ -1294,7 +1294,7 @@ isdnloop_command(isdn_ctrl * c, isdnloop
 							c->parm.num[0] ? "N" : "ALL", c->parm.num);
 					} else
 						sprintf(cbuf, "%02d;EAZ%s\n", (int) a,
-							c->parm.num[0] ? c->parm.num : (u_char *) "0123456789");
+							c->parm.num[0] ? c->parm.num : decimal);
 					i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
 				}
 				break;
Index: linux-kj/drivers/net/irda/ma600.c
===================================================================
--- linux-kj.orig/drivers/net/irda/ma600.c	2005-12-05 13:17:53.000000000 +0300
+++ linux-kj/drivers/net/irda/ma600.c	2005-12-05 13:20:09.000000000 +0300
@@ -54,10 +54,6 @@
 	        func}
 #endif
 
-/* convert hex value to ascii hex */
-static const char hexTbl[] = "0123456789ABCDEF";
-
-
 static void ma600_open(dongle_t *self, struct qos_info *qos);
 static void ma600_close(dongle_t *self);
 static int  ma600_change_speed(struct irda_task *task);
@@ -243,10 +239,10 @@ static int ma600_change_speed(struct ird
 			/* if control byte != echo, I don't know what to do */
 			printk(KERN_WARNING "%s() control byte written != read!\n", __FUNCTION__);
 			printk(KERN_WARNING "control byte = 0x%c%c\n", 
-			       hexTbl[(byte>>4)&0x0f], hexTbl[byte&0x0f]);
+			       large_digits[(byte>>4)&0x0f], large_digits[byte&0x0f]);
 			printk(KERN_WARNING "byte echo = 0x%c%c\n", 
-			       hexTbl[(byte_echo>>4) & 0x0f], 
-			       hexTbl[byte_echo & 0x0f]);
+			       large_digits[(byte_echo>>4) & 0x0f], 
+			       large_digits[byte_echo & 0x0f]);
 		#ifndef NDEBUG
 		} else {
 			IRDA_DEBUG(2, "%s() control byte write read OK\n", __FUNCTION__);
Index: linux-kj/drivers/net/sk98lin/skge.c
===================================================================
--- linux-kj.orig/drivers/net/sk98lin/skge.c	2005-12-05 13:17:53.000000000 +0300
+++ linux-kj/drivers/net/sk98lin/skge.c	2005-12-05 13:20:09.000000000 +0300
@@ -4717,7 +4717,6 @@ register int    i;
 int	haddr, addr;
 char	hex_buffer[180];
 char	asc_buffer[180];
-char	HEXCHAR[] = "0123456789ABCDEF";
 
 	addr = 0;
 	haddr = 0;
@@ -4730,9 +4729,9 @@ char	HEXCHAR[] = "0123456789ABCDEF";
 			asc_buffer[addr] = '.';
 		addr++;
 		asc_buffer[addr] = 0;
-		hex_buffer[haddr] = HEXCHAR[(*p & 0xf0) >> 4];
+		hex_buffer[haddr] = large_digits[(*p & 0xf0) >> 4];
 		haddr++;
-		hex_buffer[haddr] = HEXCHAR[*p & 0x0f];
+		hex_buffer[haddr] = large_digits[*p & 0x0f];
 		haddr++;
 		hex_buffer[haddr] = ' ';
 		haddr++;
@@ -4765,7 +4764,6 @@ register int    i;
 int	haddr, addr;
 char	hex_buffer[180];
 char	asc_buffer[180];
-char	HEXCHAR[] = "0123456789ABCDEF";
 long	*p;
 int	l;
 
@@ -4776,21 +4774,21 @@ int	l;
 	p = (long*) pc;
 	for (i=0; i < size; ) {
 		l = (long) *p;
-		hex_buffer[haddr] = HEXCHAR[(l >> 28) & 0xf];
+		hex_buffer[haddr] = large_digits[(l >> 28) & 0xf];
 		haddr++;
-		hex_buffer[haddr] = HEXCHAR[(l >> 24) & 0xf];
+		hex_buffer[haddr] = large_digits[(l >> 24) & 0xf];
 		haddr++;
-		hex_buffer[haddr] = HEXCHAR[(l >> 20) & 0xf];
+		hex_buffer[haddr] = large_digits[(l >> 20) & 0xf];
 		haddr++;
-		hex_buffer[haddr] = HEXCHAR[(l >> 16) & 0xf];
+		hex_buffer[haddr] = large_digits[(l >> 16) & 0xf];
 		haddr++;
-		hex_buffer[haddr] = HEXCHAR[(l >> 12) & 0xf];
+		hex_buffer[haddr] = large_digits[(l >> 12) & 0xf];
 		haddr++;
-		hex_buffer[haddr] = HEXCHAR[(l >> 8) & 0xf];
+		hex_buffer[haddr] = large_digits[(l >> 8) & 0xf];
 		haddr++;
-		hex_buffer[haddr] = HEXCHAR[(l >> 4) & 0xf];
+		hex_buffer[haddr] = large_digits[(l >> 4) & 0xf];
 		haddr++;
-		hex_buffer[haddr] = HEXCHAR[l & 0x0f];
+		hex_buffer[haddr] = large_digits[l & 0x0f];
 		haddr++;
 		hex_buffer[haddr] = ' ';
 		haddr++;
Index: linux-kj/drivers/net/skfp/smt.c
===================================================================
--- linux-kj.orig/drivers/net/skfp/smt.c	2005-12-05 13:17:53.000000000 +0300
+++ linux-kj/drivers/net/skfp/smt.c	2005-12-05 13:20:09.000000000 +0300
@@ -1731,7 +1731,7 @@ void fddi_send_antc(struct s_smc *smc, s
 #endif
 
 #ifdef	DEBUG
-#define hextoasc(x)	"0123456789abcdef"[x]
+#define hextoasc(x)	small_digits[x]
 
 char *addr_to_string(struct fddi_addr *addr)
 {
Index: linux-kj/drivers/net/wireless/strip.c
===================================================================
--- linux-kj.orig/drivers/net/wireless/strip.c	2005-12-05 13:19:07.000000000 +0300
+++ linux-kj/drivers/net/wireless/strip.c	2005-12-05 13:20:09.000000000 +0300
@@ -404,8 +404,6 @@ static const StringDescriptor CommandStr
      (S)->battery_voltage.c[0]  && \
      memcmp(&(S)->true_dev_addr, zero_address.c, sizeof(zero_address)))
 
-static const char hextable[16] = "0123456789ABCDEF";
-
 static const MetricomAddress zero_address;
 static const MetricomAddress broadcast_address =
     { {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF} };
@@ -1285,13 +1283,13 @@ static __u8 *add_checksum(__u8 * buffer,
 	__u8 *p = buffer;
 	while (p < end)
 		sum += *p++;
-	end[3] = hextable[sum & 0xF];
+	end[3] = large_digits[sum & 0xF];
 	sum >>= 4;
-	end[2] = hextable[sum & 0xF];
+	end[2] = large_digits[sum & 0xF];
 	sum >>= 4;
-	end[1] = hextable[sum & 0xF];
+	end[1] = large_digits[sum & 0xF];
 	sum >>= 4;
-	end[0] = hextable[sum & 0xF];
+	end[0] = large_digits[sum & 0xF];
 	return (end + 4);
 }
 
@@ -1372,15 +1370,15 @@ static unsigned char *strip_make_packet(
 
 	*ptr++ = 0x0D;
 	*ptr++ = '*';
-	*ptr++ = hextable[haddr.c[2] >> 4];
-	*ptr++ = hextable[haddr.c[2] & 0xF];
-	*ptr++ = hextable[haddr.c[3] >> 4];
-	*ptr++ = hextable[haddr.c[3] & 0xF];
+	*ptr++ = large_digits[haddr.c[2] >> 4];
+	*ptr++ = large_digits[haddr.c[2] & 0xF];
+	*ptr++ = large_digits[haddr.c[3] >> 4];
+	*ptr++ = large_digits[haddr.c[3] & 0xF];
 	*ptr++ = '-';
-	*ptr++ = hextable[haddr.c[4] >> 4];
-	*ptr++ = hextable[haddr.c[4] & 0xF];
-	*ptr++ = hextable[haddr.c[5] >> 4];
-	*ptr++ = hextable[haddr.c[5] & 0xF];
+	*ptr++ = large_digits[haddr.c[4] >> 4];
+	*ptr++ = large_digits[haddr.c[4] & 0xF];
+	*ptr++ = large_digits[haddr.c[5] >> 4];
+	*ptr++ = large_digits[haddr.c[5] & 0xF];
 	*ptr++ = '*';
 	*ptr++ = key.c[0];
 	*ptr++ = key.c[1];
Index: linux-kj/drivers/pnp/pnpbios/rsparser.c
===================================================================
--- linux-kj.orig/drivers/pnp/pnpbios/rsparser.c	2005-12-05 13:17:53.000000000 +0300
+++ linux-kj/drivers/pnp/pnpbios/rsparser.c	2005-12-05 13:20:09.000000000 +0300
@@ -477,14 +477,12 @@ pnpbios_parse_resource_option_data(unsig
  * Compatible Device IDs
  */
 
-#define HEX(id,a) hex[((id)>>a) & 15]
+#define HEX(id,a) small_digits[((id)>>a) & 15]
 #define CHAR(id,a) (0x40 + (((id)>>a) & 31))
 //
 
 void pnpid32_to_pnpid(u32 id, char *str)
 {
-	const char *hex = "0123456789abcdef";
-
 	id = be32_to_cpu(id);
 	str[0] = CHAR(id, 26);
 	str[1] = CHAR(id, 21);
Index: linux-kj/drivers/scsi/ibmmca.c
===================================================================
--- linux-kj.orig/drivers/scsi/ibmmca.c	2005-12-05 13:18:00.000000000 +0300
+++ linux-kj/drivers/scsi/ibmmca.c	2005-12-05 13:20:09.000000000 +0300
@@ -1001,12 +1001,11 @@ static char *ti_p(int dev)
 /* interpreter for logical device numbers (ldn) */
 static char *ti_l(int val)
 {
-	const char hex[16] = "0123456789abcdef";
 	static char answer[2];
 
 	answer[1] = (char) (0x0);
 	if (val <= MAX_LOG_DEV)
-		answer[0] = hex[val];
+		answer[0] = small_digits[val];
 	else
 		answer[0] = '-';
 	return (char *) &answer;
Index: linux-kj/drivers/scsi/ultrastor.c
===================================================================
--- linux-kj.orig/drivers/scsi/ultrastor.c	2005-12-05 13:18:00.000000000 +0300
+++ linux-kj/drivers/scsi/ultrastor.c	2005-12-05 13:20:09.000000000 +0300
@@ -869,8 +869,8 @@ static int ultrastor_abort(Scsi_Cmnd *SC
 	for (i = 0; i < 16; i++)
 	  {
 	    unsigned char p = inb(port0 + i);
-	    out[28 + i * 3] = "0123456789abcdef"[p >> 4];
-	    out[29 + i * 3] = "0123456789abcdef"[p & 15];
+	    out[28 + i * 3] = small_digits[p >> 4];
+	    out[29 + i * 3] = small_digits[p & 15];
 	    out[30 + i * 3] = ' ';
 	  }
 	out[28 + i * 3] = '\n';
Index: linux-kj/drivers/serial/sh-sci.c
===================================================================
--- linux-kj.orig/drivers/serial/sh-sci.c	2005-12-05 13:18:04.000000000 +0300
+++ linux-kj/drivers/serial/sh-sci.c	2005-12-05 13:20:09.000000000 +0300
@@ -119,16 +119,14 @@ static int get_char(struct uart_port *po
 }
 
 /* Taken from sh-stub.c of GDB 4.18 */
-static const char hexchars[] = "0123456789abcdef";
-
 static __inline__ char highhex(int  x)
 {
-	return hexchars[(x >> 4) & 0xf];
+	return small_digits[(x >> 4) & 0xf];
 }
 
 static __inline__ char lowhex(int  x)
 {
-	return hexchars[x & 0xf];
+	return small_digits[x & 0xf];
 }
 
 #endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */
Index: linux-kj/fs/udf/unicode.c
===================================================================
--- linux-kj.orig/fs/udf/unicode.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/fs/udf/unicode.c	2005-12-05 13:20:09.000000000 +0300
@@ -427,7 +427,6 @@ static int udf_translate_to_linux(uint8_
 	int extIndex = 0, newExtIndex = 0, hasExt = 0;
 	unsigned short valueCRC;
 	uint8_t curr;
-	const uint8_t hexChar[] = "0123456789ABCDEF";
 
 	if (udfName[0] == '.' && (udfLen == 1 ||
 		(udfLen == 2 && udfName[1] == '.')))
@@ -500,10 +499,10 @@ static int udf_translate_to_linux(uint8_
 			newIndex = 250;
 		newName[newIndex++] = CRC_MARK;
 		valueCRC = udf_crc(fidName, fidNameLen, 0);
-		newName[newIndex++] = hexChar[(valueCRC & 0xf000) >> 12];
-		newName[newIndex++] = hexChar[(valueCRC & 0x0f00) >> 8];
-		newName[newIndex++] = hexChar[(valueCRC & 0x00f0) >> 4];
-		newName[newIndex++] = hexChar[(valueCRC & 0x000f)];
+		newName[newIndex++] = large_digits[(valueCRC & 0xf000) >> 12];
+		newName[newIndex++] = large_digits[(valueCRC & 0x0f00) >> 8];
+		newName[newIndex++] = large_digits[(valueCRC & 0x00f0) >> 4];
+		newName[newIndex++] = large_digits[(valueCRC & 0x000f)];
 
 		if (hasExt)
 		{
Index: linux-kj/include/linux/kernel.h
===================================================================
--- linux-kj.orig/include/linux/kernel.h	2005-12-05 13:18:14.000000000 +0300
+++ linux-kj/include/linux/kernel.h	2005-12-05 13:20:09.000000000 +0300
@@ -86,6 +86,8 @@ extern int cond_resched(void);
 	})
 
 extern struct notifier_block *panic_notifier_list;
+extern const unsigned char small_digits[];
+extern const unsigned char large_digits[];
 extern long (*panic_blink)(long time);
 NORET_TYPE void panic(const char * fmt, ...)
 	__attribute__ ((NORET_AND format (printf, 1, 2)));
Index: linux-kj/kernel/audit.c
===================================================================
--- linux-kj.orig/kernel/audit.c	2005-12-05 13:20:07.000000000 +0300
+++ linux-kj/kernel/audit.c	2005-12-05 13:20:09.000000000 +0300
@@ -787,7 +787,6 @@ void audit_log_hex(struct audit_buffer *
 	int i, avail, new_len;
 	unsigned char *ptr;
 	struct sk_buff *skb;
-	static const unsigned char hex[] = "0123456789ABCDEF";
 
 	BUG_ON(!ab->skb);
 	skb = ab->skb;
@@ -803,8 +802,8 @@ void audit_log_hex(struct audit_buffer *
 
 	ptr = skb->tail;
 	for (i=0; i<len; i++) {
-		*ptr++ = hex[(buf[i] & 0xF0)>>4]; /* Upper nibble */
-		*ptr++ = hex[buf[i] & 0x0F];	  /* Lower nibble */
+		*ptr++ = large_digits[(buf[i] & 0xF0)>>4]; /* Upper nibble */
+		*ptr++ = large_digits[buf[i] & 0x0F];	  /* Lower nibble */
 	}
 	*ptr = 0;
 	skb_put(skb, len << 1); /* new string is twice the old string */
Index: linux-kj/lib/vsprintf.c
===================================================================
--- linux-kj.orig/lib/vsprintf.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/lib/vsprintf.c	2005-12-05 13:20:09.000000000 +0300
@@ -26,6 +26,12 @@
 #include <asm/page.h>		/* for PAGE_SIZE */
 #include <asm/div64.h>
 
+const unsigned char small_digits[] = "0123456789abcdefghijklmnopqrstuvwxyz";
+EXPORT_SYMBOL(small_digits);
+
+const unsigned char large_digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+EXPORT_SYMBOL(large_digits);
+
 /**
  * simple_strtoul - convert a string to an unsigned long
  * @cp: The start of the string
@@ -147,8 +153,6 @@ static char * number(char * buf, char * 
 {
 	char c,sign,tmp[66];
 	const char *digits;
-	static const char small_digits[] = "0123456789abcdefghijklmnopqrstuvwxyz";
-	static const char large_digits[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 	int i;
 
 	digits = (type & LARGE) ? large_digits : small_digits;
Index: linux-kj/net/ipv4/arp.c
===================================================================
--- linux-kj.orig/net/ipv4/arp.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/net/ipv4/arp.c	2005-12-05 13:20:09.000000000 +0300
@@ -1291,7 +1291,6 @@ static void arp_format_neigh_entry(struc
 				   struct neighbour *n)
 {
 	char hbuffer[HBUFFERLEN];
-	const char hexbuf[] = "0123456789ABCDEF";
 	int k, j;
 	char tbuf[16];
 	struct net_device *dev = n->dev;
@@ -1305,8 +1304,8 @@ static void arp_format_neigh_entry(struc
 	else {
 #endif
 	for (k = 0, j = 0; k < HBUFFERLEN - 3 && j < dev->addr_len; j++) {
-		hbuffer[k++] = hexbuf[(n->ha[j] >> 4) & 15];
-		hbuffer[k++] = hexbuf[n->ha[j] & 15];
+		hbuffer[k++] = large_digits[(n->ha[j] >> 4) & 15];
+		hbuffer[k++] = large_digits[n->ha[j] & 15];
 		hbuffer[k++] = ':';
 	}
 	hbuffer[--k] = 0;
Index: linux-kj/net/ipv4/netfilter/ipt_CLUSTERIP.c
===================================================================
--- linux-kj.orig/net/ipv4/netfilter/ipt_CLUSTERIP.c	2005-12-05 13:17:38.000000000 +0300
+++ linux-kj/net/ipv4/netfilter/ipt_CLUSTERIP.c	2005-12-05 13:20:09.000000000 +0300
@@ -502,11 +502,10 @@ static void arp_print(struct arp_payload
 #define HBUFFERLEN 30
 	char hbuffer[HBUFFERLEN];
 	int j,k;
-	const char hexbuf[]= "0123456789abcdef";
 
 	for (k=0, j=0; k < HBUFFERLEN-3 && j < ETH_ALEN; j++) {
-		hbuffer[k++]=hexbuf[(payload->src_hw[j]>>4)&15];
-		hbuffer[k++]=hexbuf[payload->src_hw[j]&15];
+		hbuffer[k++]=small_digits[(payload->src_hw[j]>>4)&15];
+		hbuffer[k++]=small_digits[payload->src_hw[j]&15];
 		hbuffer[k++]=':';
 	}
 	hbuffer[--k]='\0';
