* [KJ] hexdigits definition consolidation
@ 2005-10-05 17:01 Masoud Sharbiani
2005-10-05 17:25 ` Matthew Wilcox
0 siblings, 1 reply; 2+ messages in thread
From: Masoud Sharbiani @ 2005-10-05 17:01 UTC (permalink / raw)
To: kernel-janitors
[-- Attachment #1: Type: text/plain, Size: 48470 bytes --]
Hello,
The following patch consolidates several definitions of hex digits as string that are spread throughout the kernel and drivers.
I had to create a separate file in lib/ directory to hold the actual values, and EXPORT_SYMBOL them them so that they could be used by modules.
cheers,
Masoud
Signed-off-by: Masoud A Sharbiani <masouds@masoud.ir>
diff -urN linux-2.6.clean/arch/cris/arch-v10/kernel/kgdb.c linux-2.6.patched/arch/cris/arch-v10/kernel/kgdb.c
--- linux-2.6.clean/arch/cris/arch-v10/kernel/kgdb.c 2005-10-05 12:10:36.000000000 -0400
+++ linux-2.6.patched/arch/cris/arch-v10/kernel/kgdb.c 2005-10-05 12:36:48.000000000 -0400
@@ -230,6 +230,7 @@
#include <linux/delay.h>
#include <linux/linkage.h>
#include <linux/reboot.h>
+#include <linux/digits.h>
#include <asm/setup.h>
#include <asm/ptrace.h>
@@ -415,7 +416,6 @@
#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 +557,8 @@
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(hex, *s1, base)) != NULL; ++s1)
+ x = x * base + (sd - hex);
if (endptr)
{
diff -urN linux-2.6.clean/arch/cris/arch-v32/kernel/kgdb.c linux-2.6.patched/arch/cris/arch-v32/kernel/kgdb.c
--- linux-2.6.clean/arch/cris/arch-v32/kernel/kgdb.c 2005-10-05 12:10:36.000000000 -0400
+++ linux-2.6.patched/arch/cris/arch-v32/kernel/kgdb.c 2005-10-05 12:36:48.000000000 -0400
@@ -169,6 +169,7 @@
#include <linux/delay.h>
#include <linux/linkage.h>
#include <linux/reboot.h>
+#include <linux/digits.h>
#include <asm/setup.h>
#include <asm/ptrace.h>
@@ -465,7 +466,6 @@
#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 +550,8 @@
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(hex, *s1, base)) != NULL; ++s1)
+ x = x * base + (sd - hex);
if (endptr) {
/* Unconverted suffix is stored in endptr unless endptr is NULL. */
@@ -660,7 +660,7 @@
static inline char
highhex(int x)
{
- return hexchars[(x >> 4) & 0xf];
+ return hex[(x >> 4) & 0xf];
}
/* Returns the character equivalent of a nibble, bit 3, 2, 1, and 0 of a byte,
@@ -668,7 +668,7 @@
static inline char
lowhex(int x)
{
- return hexchars[x & 0xf];
+ return hex[x & 0xf];
}
/* Returns the integer equivalent of a hexadecimal character. */
diff -urN linux-2.6.clean/arch/frv/kernel/gdb-stub.c linux-2.6.patched/arch/frv/kernel/gdb-stub.c
--- linux-2.6.clean/arch/frv/kernel/gdb-stub.c 2005-10-05 12:10:36.000000000 -0400
+++ linux-2.6.patched/arch/frv/kernel/gdb-stub.c 2005-10-05 12:36:48.000000000 -0400
@@ -123,6 +123,7 @@
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/nmi.h>
+#include <linux/digits.h>
#include <asm/pgtable.h>
#include <asm/system.h>
@@ -182,8 +183,6 @@
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 +382,8 @@
}
gdbstub_tx_char('#');
- gdbstub_tx_char(hexchars[checksum >> 4]);
- gdbstub_tx_char(hexchars[checksum & 0xf]);
+ gdbstub_tx_char(hex[checksum >> 4]);
+ gdbstub_tx_char(hex[checksum & 0xf]);
} while (gdbstub_rx_char(&ch,0),
#ifdef GDBSTUB_DEBUG_PROTOCOL
@@ -680,8 +679,8 @@
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++ = hex[ch[0] >> 4];
+ *buf++ = hex[ch[0] & 0xf];
mem++;
count--;
}
@@ -689,10 +688,10 @@
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++ = hex[ch[0] >> 4];
+ *buf++ = hex[ch[0] & 0xf];
+ *buf++ = hex[ch[1] >> 4];
+ *buf++ = hex[ch[1] & 0xf];
mem += 2;
count -= 2;
}
@@ -700,14 +699,14 @@
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++ = hex[ch[0] >> 4];
+ *buf++ = hex[ch[0] & 0xf];
+ *buf++ = hex[ch[1] >> 4];
+ *buf++ = hex[ch[1] & 0xf];
+ *buf++ = hex[ch[2] >> 4];
+ *buf++ = hex[ch[2] & 0xf];
+ *buf++ = hex[ch[3] >> 4];
+ *buf++ = hex[ch[3] & 0xf];
mem += 4;
count -= 4;
}
@@ -715,10 +714,10 @@
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++ = hex[ch[0] >> 4];
+ *buf++ = hex[ch[0] & 0xf];
+ *buf++ = hex[ch[1] >> 4];
+ *buf++ = hex[ch[1] & 0xf];
mem += 2;
count -= 2;
}
@@ -726,8 +725,8 @@
if (count>=1) {
if (!gdbstub_read_byte(mem,ch))
return NULL;
- *buf++ = hexchars[ch[0] >> 4];
- *buf++ = hexchars[ch[0] & 0xf];
+ *buf++ = hex[ch[0] >> 4];
+ *buf++ = hex[ch[0] & 0xf];
}
*buf = 0;
@@ -1448,22 +1447,22 @@
*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 = hex[(brr & 0xf0000000) >> 28];
+ *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
+ hx = hex[(brr & 0x0f000000) >> 24];
+ *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
+ hx = hex[(brr & 0x00f00000) >> 20];
+ *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
+ hx = hex[(brr & 0x000f0000) >> 16];
+ *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
+ hx = hex[(brr & 0x0000f000) >> 12];
+ *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
+ hx = hex[(brr & 0x00000f00) >> 8];
+ *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
+ hx = hex[(brr & 0x000000f0) >> 4];
+ *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
+ hx = hex[(brr & 0x0000000f)];
+ *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
ptr = mem2hex(crlf, ptr, sizeof(crlf) - 1, 0);
*ptr = 0;
@@ -1477,12 +1476,12 @@
/* Send trap type (converted to signal) */
*ptr++ = 'T';
- *ptr++ = hexchars[sigval >> 4];
- *ptr++ = hexchars[sigval & 0xf];
+ *ptr++ = hex[sigval >> 4];
+ *ptr++ = hex[sigval & 0xf];
/* Send Error PC */
- *ptr++ = hexchars[GDB_REG_PC >> 4];
- *ptr++ = hexchars[GDB_REG_PC & 0xf];
+ *ptr++ = hex[GDB_REG_PC >> 4];
+ *ptr++ = hex[GDB_REG_PC & 0xf];
*ptr++ = ':';
ptr = mem2hex(&__debug_frame->pc, ptr, 4, 0);
*ptr++ = ';';
@@ -1490,8 +1489,8 @@
/*
* Send frame pointer
*/
- *ptr++ = hexchars[GDB_REG_FP >> 4];
- *ptr++ = hexchars[GDB_REG_FP & 0xf];
+ *ptr++ = hex[GDB_REG_FP >> 4];
+ *ptr++ = hex[GDB_REG_FP & 0xf];
*ptr++ = ':';
ptr = mem2hex(&__debug_frame->fp, ptr, 4, 0);
*ptr++ = ';';
@@ -1499,8 +1498,8 @@
/*
* Send stack pointer
*/
- *ptr++ = hexchars[GDB_REG_SP >> 4];
- *ptr++ = hexchars[GDB_REG_SP & 0xf];
+ *ptr++ = hex[GDB_REG_SP >> 4];
+ *ptr++ = hex[GDB_REG_SP & 0xf];
*ptr++ = ':';
ptr = mem2hex(&__debug_frame->sp, ptr, 4, 0);
*ptr++ = ';';
@@ -1525,8 +1524,8 @@
/* 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] = hex[sigval >> 4];
+ output_buffer[2] = hex[sigval & 0xf];
output_buffer[3] = 0;
break;
@@ -2044,8 +2043,8 @@
}
gdbstub_tx_char('#');
- gdbstub_tx_char(hexchars[checksum >> 4]);
- gdbstub_tx_char(hexchars[checksum & 0xf]);
+ gdbstub_tx_char(hex[checksum >> 4]);
+ gdbstub_tx_char(hex[checksum & 0xf]);
/* make sure the output is flushed, or else RedBoot might clobber it */
gdbstub_tx_char('-');
diff -urN linux-2.6.clean/arch/mips/au1000/common/puts.c linux-2.6.patched/arch/mips/au1000/common/puts.c
--- linux-2.6.clean/arch/mips/au1000/common/puts.c 2005-10-05 12:10:37.000000000 -0400
+++ linux-2.6.patched/arch/mips/au1000/common/puts.c 2005-10-05 12:36:48.000000000 -0400
@@ -39,7 +39,6 @@
#define TIMEOUT 0xffffff
#define SLOW_DOWN
-static const char digits[16] = "0123456789abcdef";
static volatile unsigned long * const com1 = (unsigned long *)SERIAL_BASE;
@@ -124,7 +123,7 @@
do {
cnt--;
ch = (unsigned char)(ul >> cnt * 4) & 0x0F;
- putch(digits[ch]);
+ putch(hex[ch]);
} while (cnt > 0);
}
@@ -140,6 +139,6 @@
do {
cnt--;
ch = (unsigned char)(u >> cnt * 4) & 0x0F;
- putch(digits[ch]);
+ putch(hex[ch]);
} while (cnt > 0);
}
diff -urN linux-2.6.clean/arch/mips/galileo-boards/ev96100/puts.c linux-2.6.patched/arch/mips/galileo-boards/ev96100/puts.c
--- linux-2.6.clean/arch/mips/galileo-boards/ev96100/puts.c 2005-10-05 12:10:37.000000000 -0400
+++ linux-2.6.patched/arch/mips/galileo-boards/ev96100/puts.c 2005-10-05 12:36:48.000000000 -0400
@@ -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 @@
do {
cnt--;
ch = (unsigned char) (ul >> cnt * 4) & 0x0F;
- putch(digits[ch]);
+ putch(hex[ch]);
} while (cnt > 0);
}
@@ -133,6 +132,6 @@
do {
cnt--;
ch = (unsigned char) (u >> cnt * 4) & 0x0F;
- putch(digits[ch]);
+ putch(hex[ch]);
} while (cnt > 0);
}
diff -urN linux-2.6.clean/arch/mips/ite-boards/generic/puts.c linux-2.6.patched/arch/mips/ite-boards/generic/puts.c
--- linux-2.6.clean/arch/mips/ite-boards/generic/puts.c 2005-10-05 12:10:37.000000000 -0400
+++ linux-2.6.patched/arch/mips/ite-boards/generic/puts.c 2005-10-05 12:36:48.000000000 -0400
@@ -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 @@
do {
cnt--;
ch = (unsigned char) (ul >> cnt * 4) & 0x0F;
- putch(digits[ch]);
+ putch(hex[ch]);
} while (cnt > 0);
}
@@ -134,6 +133,6 @@
do {
cnt--;
ch = (unsigned char) (u >> cnt * 4) & 0x0F;
- putch(digits[ch]);
+ putch(hex[ch]);
} while (cnt > 0);
}
diff -urN linux-2.6.clean/arch/mips/jmr3927/common/puts.c linux-2.6.patched/arch/mips/jmr3927/common/puts.c
--- linux-2.6.clean/arch/mips/jmr3927/common/puts.c 2005-10-05 12:10:37.000000000 -0400
+++ linux-2.6.patched/arch/mips/jmr3927/common/puts.c 2005-10-05 12:36:48.000000000 -0400
@@ -33,6 +33,7 @@
*/
#include <linux/types.h>
+#include <linux/digits.h>
#include <asm/jmr3927/txx927.h>
#include <asm/jmr3927/tx3927.h>
#include <asm/jmr3927/jmr3927.h>
@@ -40,8 +41,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 +146,7 @@
do {
cnt--;
ch = (unsigned char)(ul >> cnt * 4) & 0x0F;
- putch(digits[ch]);
+ putch(hex[ch]);
} while (cnt > 0);
}
@@ -163,6 +162,6 @@
do {
cnt--;
ch = (unsigned char)(u >> cnt * 4) & 0x0F;
- putch(digits[ch]);
+ putch(hex[ch]);
} while (cnt > 0);
}
diff -urN linux-2.6.clean/arch/mips/jmr3927/rbhma3100/kgdb_io.c linux-2.6.patched/arch/mips/jmr3927/rbhma3100/kgdb_io.c
--- linux-2.6.clean/arch/mips/jmr3927/rbhma3100/kgdb_io.c 2005-10-05 12:10:37.000000000 -0400
+++ linux-2.6.patched/arch/mips/jmr3927/rbhma3100/kgdb_io.c 2005-10-05 12:36:48.000000000 -0400
@@ -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
diff -urN linux-2.6.clean/arch/mips/kernel/gdb-stub.c linux-2.6.patched/arch/mips/kernel/gdb-stub.c
--- linux-2.6.clean/arch/mips/kernel/gdb-stub.c 2005-10-05 12:10:37.000000000 -0400
+++ linux-2.6.patched/arch/mips/kernel/gdb-stub.c 2005-10-05 12:36:48.000000000 -0400
@@ -132,6 +132,7 @@
#include <linux/spinlock.h>
#include <linux/slab.h>
#include <linux/reboot.h>
+#include <linux/digits.h>
#include <asm/asm.h>
#include <asm/cacheflush.h>
@@ -189,7 +190,6 @@
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... */
@@ -305,8 +305,8 @@
}
putDebugChar('#');
- putDebugChar(hexchars[checksum >> 4]);
- putDebugChar(hexchars[checksum & 0xf]);
+ putDebugChar(hex[checksum >> 4]);
+ putDebugChar(hex[checksum & 0xf]);
}
while ((getDebugChar() & 0x7f) != '+');
@@ -327,8 +327,8 @@
while (count-- > 0) {
if (kgdb_read_byte(mem++, &ch) != 0)
return 0;
- *buf++ = hexchars[ch >> 4];
- *buf++ = hexchars[ch & 0xf];
+ *buf++ = hex[ch >> 4];
+ *buf++ = hex[ch & 0xf];
}
*buf = 0;
@@ -748,14 +748,14 @@
* Send trap type (converted to signal)
*/
*ptr++ = 'T';
- *ptr++ = hexchars[sigval >> 4];
- *ptr++ = hexchars[sigval & 0xf];
+ *ptr++ = hex[sigval >> 4];
+ *ptr++ = hex[sigval & 0xf];
/*
* Send Error PC
*/
- *ptr++ = hexchars[REG_EPC >> 4];
- *ptr++ = hexchars[REG_EPC & 0xf];
+ *ptr++ = hex[REG_EPC >> 4];
+ *ptr++ = hex[REG_EPC & 0xf];
*ptr++ = ':';
ptr = mem2hex((char *)®s->cp0_epc, ptr, sizeof(long), 0);
*ptr++ = ';';
@@ -763,8 +763,8 @@
/*
* Send frame pointer
*/
- *ptr++ = hexchars[REG_FP >> 4];
- *ptr++ = hexchars[REG_FP & 0xf];
+ *ptr++ = hex[REG_FP >> 4];
+ *ptr++ = hex[REG_FP & 0xf];
*ptr++ = ':';
ptr = mem2hex((char *)®s->reg30, ptr, sizeof(long), 0);
*ptr++ = ';';
@@ -772,8 +772,8 @@
/*
* Send stack pointer
*/
- *ptr++ = hexchars[REG_SP >> 4];
- *ptr++ = hexchars[REG_SP & 0xf];
+ *ptr++ = hex[REG_SP >> 4];
+ *ptr++ = hex[REG_SP & 0xf];
*ptr++ = ':';
ptr = mem2hex((char *)®s->reg29, ptr, sizeof(long), 0);
*ptr++ = ';';
@@ -792,8 +792,8 @@
{
case '?':
output_buffer[0] = 'S';
- output_buffer[1] = hexchars[sigval >> 4];
- output_buffer[2] = hexchars[sigval & 0xf];
+ output_buffer[1] = hex[sigval >> 4];
+ output_buffer[2] = hex[sigval & 0xf];
output_buffer[3] = 0;
break;
diff -urN linux-2.6.clean/arch/ppc/boot/common/misc-common.c linux-2.6.patched/arch/ppc/boot/common/misc-common.c
--- linux-2.6.clean/arch/ppc/boot/common/misc-common.c 2005-10-05 12:10:37.000000000 -0400
+++ linux-2.6.patched/arch/ppc/boot/common/misc-common.c 2005-10-05 12:36:49.000000000 -0400
@@ -18,6 +18,7 @@
#include <linux/config.h>
#include <linux/string.h>
#include <linux/zlib.h>
+#include <linux/digits.h>
#include "nonstdio.h"
/* If we're on a PReP, assume we have a keyboard controller
@@ -280,7 +281,7 @@
int i;
for (i = 7; i >= 0; i--)
{
- buf[i] = "0123456789ABCDEF"[val & 0x0F];
+ buf[i] = hex[val & 0x0F];
val >>= 4;
}
buf[8] = '\0';
@@ -362,13 +363,13 @@
sign = '-';
val = -val;
}
- length = _cvt(val, buf, 10, "0123456789");
+ length = _cvt(val, buf, 10, decimal);
break;
case 'x':
- length = _cvt(val, buf, 16, "0123456789abcdef");
+ length = _cvt(val, buf, 16, hex);
break;
case 'X':
- length = _cvt(val, buf, 16, "0123456789ABCDEF");
+ length = _cvt(val, buf, 16, HEX);
break;
}
cp = buf;
diff -urN linux-2.6.clean/arch/ppc/kernel/ppc-stub.c linux-2.6.patched/arch/ppc/kernel/ppc-stub.c
--- linux-2.6.clean/arch/ppc/kernel/ppc-stub.c 2005-10-05 12:10:37.000000000 -0400
+++ linux-2.6.patched/arch/ppc/kernel/ppc-stub.c 2005-10-05 12:36:49.000000000 -0400
@@ -107,6 +107,7 @@
#include <linux/smp_lock.h>
#include <linux/init.h>
#include <linux/sysrq.h>
+#include <linux/digits.h>
#include <asm/cacheflush.h>
#include <asm/system.h>
@@ -132,7 +133,6 @@
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 +206,28 @@
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++ = hex[(tmp_s >> 12) & 0xf];
+ *buf++ = hex[(tmp_s >> 8) & 0xf];
+ *buf++ = hex[(tmp_s >> 4) & 0xf];
+ *buf++ = hex[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++ = hex[(tmp_l >> 28) & 0xf];
+ *buf++ = hex[(tmp_l >> 24) & 0xf];
+ *buf++ = hex[(tmp_l >> 20) & 0xf];
+ *buf++ = hex[(tmp_l >> 16) & 0xf];
+ *buf++ = hex[(tmp_l >> 12) & 0xf];
+ *buf++ = hex[(tmp_l >> 8) & 0xf];
+ *buf++ = hex[(tmp_l >> 4) & 0xf];
+ *buf++ = hex[tmp_l & 0xf];
} else {
while (count-- > 0) {
ch = *mem++;
- *buf++ = hexchars[ch >> 4];
- *buf++ = hexchars[ch & 0xf];
+ *buf++ = hex[ch >> 4];
+ *buf++ = hex[ch & 0xf];
}
}
@@ -412,8 +412,8 @@
}
putDebugChar('#');
- putDebugChar(hexchars[checksum >> 4]);
- putDebugChar(hexchars[checksum & 0xf]);
+ putDebugChar(hex[checksum >> 4]);
+ putDebugChar(hex[checksum & 0xf]);
recv = getDebugChar();
} while ((recv & 0x7f) != '+');
}
@@ -603,15 +603,15 @@
ptr = remcomOutBuffer;
*ptr++ = 'T';
- *ptr++ = hexchars[sigval >> 4];
- *ptr++ = hexchars[sigval & 0xf];
- *ptr++ = hexchars[PC_REGNUM >> 4];
- *ptr++ = hexchars[PC_REGNUM & 0xf];
+ *ptr++ = hex[sigval >> 4];
+ *ptr++ = hex[sigval & 0xf];
+ *ptr++ = hex[PC_REGNUM >> 4];
+ *ptr++ = hex[PC_REGNUM & 0xf];
*ptr++ = ':';
ptr = mem2hex((char *)®s->nip, ptr, 4);
*ptr++ = ';';
- *ptr++ = hexchars[SP_REGNUM >> 4];
- *ptr++ = hexchars[SP_REGNUM & 0xf];
+ *ptr++ = hex[SP_REGNUM >> 4];
+ *ptr++ = hex[SP_REGNUM & 0xf];
*ptr++ = ':';
ptr = mem2hex(((char *)regs) + SP_REGNUM*4, ptr, 4);
*ptr++ = ';';
@@ -633,8 +633,8 @@
switch (remcomInBuffer[0]) {
case '?': /* report most recent signal */
remcomOutBuffer[0] = 'S';
- remcomOutBuffer[1] = hexchars[sigval >> 4];
- remcomOutBuffer[2] = hexchars[sigval & 0xf];
+ remcomOutBuffer[1] = hex[sigval >> 4];
+ remcomOutBuffer[2] = hex[sigval & 0xf];
remcomOutBuffer[3] = 0;
break;
#if 0
diff -urN linux-2.6.clean/arch/ppc/kernel/process.c linux-2.6.patched/arch/ppc/kernel/process.c
--- linux-2.6.clean/arch/ppc/kernel/process.c 2005-10-05 12:10:37.000000000 -0400
+++ linux-2.6.patched/arch/ppc/kernel/process.c 2005-10-05 12:36:49.000000000 -0400
@@ -37,6 +37,7 @@
#include <linux/kallsyms.h>
#include <linux/mqueue.h>
#include <linux/hardirq.h>
+#include <linux/digits.h>
#include <asm/pgtable.h>
#include <asm/uaccess.h>
@@ -695,7 +696,7 @@
int i;
for (i = 7; i >= 0; i--)
{
- buf[i] = "0123456789ABCDEF"[val & 0x0F];
+ buf[i] = HEX[val & 0x0F];
val >>= 4;
}
buf[8] = '\0';
diff -urN linux-2.6.clean/arch/ppc/platforms/apus_setup.c linux-2.6.patched/arch/ppc/platforms/apus_setup.c
--- linux-2.6.clean/arch/ppc/platforms/apus_setup.c 2005-10-05 12:10:38.000000000 -0400
+++ linux-2.6.patched/arch/ppc/platforms/apus_setup.c 2005-10-05 12:36:49.000000000 -0400
@@ -19,6 +19,7 @@
#include <linux/init.h>
#include <linux/initrd.h>
#include <linux/seq_file.h>
+#include <linux/digits.h>
/* Needs INITSERIAL call in head.S! */
#undef APUS_DEBUG
@@ -627,10 +628,9 @@
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(HEX[(x >> 28) & 15]);
x <<= 4;
}
__debug_ser_out('\n');
diff -urN linux-2.6.clean/arch/ppc/platforms/residual.c linux-2.6.patched/arch/ppc/platforms/residual.c
--- linux-2.6.clean/arch/ppc/platforms/residual.c 2005-10-05 12:10:38.000000000 -0400
+++ linux-2.6.patched/arch/ppc/platforms/residual.c 2005-10-05 12:36:49.000000000 -0400
@@ -17,6 +17,7 @@
*/
#include <linux/string.h>
+#include <linux/digits.h>
#include <asm/residual.h>
#include <asm/pnp.h>
#include <asm/byteorder.h>
@@ -770,15 +771,14 @@
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;
+ (HEX[(Number>>12)&0x0f] == str[3]) &&
+ (HEX[(Number>>8)&0x0f] == str[4]) &&
+ (HEX[(Number>>4)&0x0f] == str[5]) &&
+ (HEX[Number&0x0f] == str[6]) ) return 1;
return 0;
}
diff -urN linux-2.6.clean/arch/ppc/syslib/btext.c linux-2.6.patched/arch/ppc/syslib/btext.c
--- linux-2.6.clean/arch/ppc/syslib/btext.c 2005-10-05 12:10:38.000000000 -0400
+++ linux-2.6.patched/arch/ppc/syslib/btext.c 2005-10-05 12:36:49.000000000 -0400
@@ -8,6 +8,7 @@
#include <linux/string.h>
#include <linux/init.h>
#include <linux/version.h>
+#include <linux/digits.h>
#include <asm/sections.h>
#include <asm/bootx.h>
@@ -392,18 +393,17 @@
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(hex[(v >> 28) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 24) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 20) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 16) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 12) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 8) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 4) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 0) & 0x0000000FUL]);
btext_drawchar(' ');
}
diff -urN linux-2.6.clean/arch/ppc64/kernel/btext.c linux-2.6.patched/arch/ppc64/kernel/btext.c
--- linux-2.6.clean/arch/ppc64/kernel/btext.c 2005-10-05 12:10:38.000000000 -0400
+++ linux-2.6.patched/arch/ppc64/kernel/btext.c 2005-10-05 12:36:49.000000000 -0400
@@ -7,6 +7,7 @@
#include <linux/kernel.h>
#include <linux/string.h>
#include <linux/init.h>
+#include <linux/digits.h>
#include <asm/sections.h>
#include <asm/prom.h>
@@ -278,26 +279,24 @@
void btext_drawhex(unsigned long v)
{
- char *hex_table = "0123456789abcdef";
-
if (!boot_text_mapped)
return;
- btext_drawchar(hex_table[(v >> 60) & 0x0000000FUL]);
- btext_drawchar(hex_table[(v >> 56) & 0x0000000FUL]);
- btext_drawchar(hex_table[(v >> 52) & 0x0000000FUL]);
- btext_drawchar(hex_table[(v >> 48) & 0x0000000FUL]);
- btext_drawchar(hex_table[(v >> 44) & 0x0000000FUL]);
- btext_drawchar(hex_table[(v >> 40) & 0x0000000FUL]);
- btext_drawchar(hex_table[(v >> 36) & 0x0000000FUL]);
- btext_drawchar(hex_table[(v >> 32) & 0x0000000FUL]);
- 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(hex[(v >> 60) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 56) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 52) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 48) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 44) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 40) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 36) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 32) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 28) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 24) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 20) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 16) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 12) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 8) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 4) & 0x0000000FUL]);
+ btext_drawchar(hex[(v >> 0) & 0x0000000FUL]);
btext_drawchar(' ');
}
diff -urN linux-2.6.clean/arch/ppc64/kernel/mf.c linux-2.6.patched/arch/ppc64/kernel/mf.c
--- linux-2.6.clean/arch/ppc64/kernel/mf.c 2005-10-05 12:10:38.000000000 -0400
+++ linux-2.6.patched/arch/ppc64/kernel/mf.c 2005-10-05 12:36:49.000000000 -0400
@@ -33,6 +33,7 @@
#include <linux/delay.h>
#include <linux/dma-mapping.h>
#include <linux/bcd.h>
+#include <linux/digits.h>
#include <asm/time.h>
#include <asm/uaccess.h>
@@ -643,10 +644,10 @@
72);
src[6] = value >> 8;
src[7] = value & 255;
- src[44] = "0123456789ABCDEF"[(value >> 12) & 15];
- src[45] = "0123456789ABCDEF"[(value >> 8) & 15];
- src[46] = "0123456789ABCDEF"[(value >> 4) & 15];
- src[47] = "0123456789ABCDEF"[value & 15];
+ src[44] = HEX[(value >> 12) & 15];
+ src[45] = HEX[(value >> 8) & 15];
+ src[46] = HEX[(value >> 4) & 15];
+ src[47] = HEX[value & 15];
dma_and_signal_ce_msg(ce, NULL, src, sizeof(src), 9 * 64 * 1024);
}
diff -urN linux-2.6.clean/arch/sh/kernel/kgdb_stub.c linux-2.6.patched/arch/sh/kernel/kgdb_stub.c
--- linux-2.6.clean/arch/sh/kernel/kgdb_stub.c 2005-10-05 12:10:38.000000000 -0400
+++ linux-2.6.patched/arch/sh/kernel/kgdb_stub.c 2005-10-05 12:36:49.000000000 -0400
@@ -100,6 +100,7 @@
#include <linux/delay.h>
#include <linux/linkage.h>
#include <linux/init.h>
+#include <linux/digits.h>
#include <asm/system.h>
#include <asm/current.h>
@@ -240,7 +241,6 @@
/* 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 +268,13 @@
/* Get high hex bits */
static char highhex(const int x)
{
- return hexchars[(x >> 4) & 0xf];
+ return hex[(x >> 4) & 0xf];
}
/* Get low hex bits */
static char lowhex(const int x)
{
- return hexchars[x & 0xf];
+ return hex[x & 0xf];
}
/* Convert ch to hex */
@@ -367,8 +367,8 @@
/* Pack a hex byte */
static char *pack_hex_byte(char *pkt, int byte)
{
- *pkt++ = hexchars[(byte >> 4) & 0xf];
- *pkt++ = hexchars[(byte & 0xf)];
+ *pkt++ = hex[(byte >> 4) & 0xf];
+ *pkt++ = hex[(byte & 0xf)];
return pkt;
}
diff -urN linux-2.6.clean/arch/sparc/kernel/sparc-stub.c linux-2.6.patched/arch/sparc/kernel/sparc-stub.c
--- linux-2.6.clean/arch/sparc/kernel/sparc-stub.c 2005-10-05 12:10:38.000000000 -0400
+++ linux-2.6.patched/arch/sparc/kernel/sparc-stub.c 2005-10-05 12:36:49.000000000 -0400
@@ -99,6 +99,7 @@
#include <linux/mm.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
+#include <linux/digits.h>
#include <asm/system.h>
#include <asm/signal.h>
@@ -127,8 +128,6 @@
static int initialized; /* !0 means we've been initialized */
-static const char hexchars[]="0123456789abcdef";
-
#define NUMREGS 72
/* Number of bytes of registers. */
@@ -298,8 +297,8 @@
}
putDebugChar('#');
- putDebugChar(hexchars[checksum >> 4]);
- putDebugChar(hexchars[checksum & 0xf]);
+ putDebugChar(hex[checksum >> 4]);
+ putDebugChar(hex[checksum & 0xf]);
recv = getDebugChar();
} while ((recv & 0x7f) != '+');
}
@@ -337,8 +336,8 @@
".word 1b, 2b\n\t"
".text\n"
: "=r" (mem), "=r" (ch) : "0" (mem));
- *buf++ = hexchars[ch >> 4];
- *buf++ = hexchars[ch & 0xf];
+ *buf++ = hex[ch >> 4];
+ *buf++ = hex[ch & 0xf];
}
*buf = 0;
@@ -527,35 +526,35 @@
ptr = remcomOutBuffer;
*ptr++ = 'T';
- *ptr++ = hexchars[sigval >> 4];
- *ptr++ = hexchars[sigval & 0xf];
+ *ptr++ = hex[sigval >> 4];
+ *ptr++ = hex[sigval & 0xf];
- *ptr++ = hexchars[PC >> 4];
- *ptr++ = hexchars[PC & 0xf];
+ *ptr++ = hex[PC >> 4];
+ *ptr++ = hex[PC & 0xf];
*ptr++ = ':';
ptr = mem2hex((char *)®isters[PC], ptr, 4);
*ptr++ = ';';
- *ptr++ = hexchars[FP >> 4];
- *ptr++ = hexchars[FP & 0xf];
+ *ptr++ = hex[FP >> 4];
+ *ptr++ = hex[FP & 0xf];
*ptr++ = ':';
ptr = mem2hex((char *) (sp + 8 + 6), ptr, 4); /* FP */
*ptr++ = ';';
- *ptr++ = hexchars[SP >> 4];
- *ptr++ = hexchars[SP & 0xf];
+ *ptr++ = hex[SP >> 4];
+ *ptr++ = hex[SP & 0xf];
*ptr++ = ':';
ptr = mem2hex((char *)&sp, ptr, 4);
*ptr++ = ';';
- *ptr++ = hexchars[NPC >> 4];
- *ptr++ = hexchars[NPC & 0xf];
+ *ptr++ = hex[NPC >> 4];
+ *ptr++ = hex[NPC & 0xf];
*ptr++ = ':';
ptr = mem2hex((char *)®isters[NPC], ptr, 4);
*ptr++ = ';';
- *ptr++ = hexchars[O7 >> 4];
- *ptr++ = hexchars[O7 & 0xf];
+ *ptr++ = hex[O7 >> 4];
+ *ptr++ = hex[O7 & 0xf];
*ptr++ = ':';
ptr = mem2hex((char *)®isters[O7], ptr, 4);
*ptr++ = ';';
@@ -577,8 +576,8 @@
switch (remcomInBuffer[0]) {
case '?':
remcomOutBuffer[0] = 'S';
- remcomOutBuffer[1] = hexchars[sigval >> 4];
- remcomOutBuffer[2] = hexchars[sigval & 0xf];
+ remcomOutBuffer[1] = hex[sigval >> 4];
+ remcomOutBuffer[2] = hex[sigval & 0xf];
remcomOutBuffer[3] = 0;
break;
diff -urN linux-2.6.clean/drivers/ide/ide.c linux-2.6.patched/drivers/ide/ide.c
--- linux-2.6.clean/drivers/ide/ide.c 2005-10-05 12:10:40.000000000 -0400
+++ linux-2.6.patched/drivers/ide/ide.c 2005-10-05 12:37:59.000000000 -0400
@@ -154,6 +154,7 @@
#include <linux/seq_file.h>
#include <linux/device.h>
#include <linux/bitops.h>
+#include <linux/digits.h>
#include <asm/byteorder.h>
#include <asm/irq.h>
@@ -1442,8 +1443,6 @@
*/
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++ == '=') {
diff -urN linux-2.6.clean/drivers/isdn/icn/icn.c linux-2.6.patched/drivers/isdn/icn/icn.c
--- linux-2.6.clean/drivers/isdn/icn/icn.c 2005-10-05 12:10:40.000000000 -0400
+++ linux-2.6.patched/drivers/isdn/icn/icn.c 2005-10-05 12:36:51.000000000 -0400
@@ -12,6 +12,7 @@
#include "icn.h"
#include <linux/module.h>
#include <linux/init.h>
+#include <linux/digits.h>
static int portbase = ICN_BASEADDR;
static unsigned long membase = ICN_MEMADDR;
@@ -1385,7 +1386,7 @@
c->parm.num[0] ? "N" : "ALL", c->parm.num);
} else
sprintf(cbuf, "%02d;EAZ%s\n", (int) a,
- c->parm.num[0] ? (char *)(c->parm.num) : "0123456789");
+ c->parm.num[0] ? (char *)(c->parm.num) : decimal);
i = icn_writecmd(cbuf, strlen(cbuf), 0, card);
}
break;
diff -urN linux-2.6.clean/drivers/isdn/isdnloop/isdnloop.c linux-2.6.patched/drivers/isdn/isdnloop/isdnloop.c
--- linux-2.6.clean/drivers/isdn/isdnloop/isdnloop.c 2005-10-05 12:10:40.000000000 -0400
+++ linux-2.6.patched/drivers/isdn/isdnloop/isdnloop.c 2005-10-05 12:36:51.000000000 -0400
@@ -14,6 +14,7 @@
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/sched.h>
+#include <linux/digits.h>
#include "isdnloop.h"
static char *revision = "$Revision: 1.11.6.7 $";
@@ -1297,7 +1298,7 @@
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;
diff -urN linux-2.6.clean/drivers/net/irda/ma600.c linux-2.6.patched/drivers/net/irda/ma600.c
--- linux-2.6.clean/drivers/net/irda/ma600.c 2005-10-05 12:10:41.000000000 -0400
+++ linux-2.6.patched/drivers/net/irda/ma600.c 2005-10-05 12:36:52.000000000 -0400
@@ -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 @@
/* 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]);
+ HEX[(byte>>4)&0x0f], HEX[byte&0x0f]);
printk(KERN_WARNING "byte echo = 0x%c%c\n",
- hexTbl[(byte_echo>>4) & 0x0f],
- hexTbl[byte_echo & 0x0f]);
+ HEX[(byte_echo>>4) & 0x0f],
+ HEX[byte_echo & 0x0f]);
#ifndef NDEBUG
} else {
IRDA_DEBUG(2, "%s() control byte write read OK\n", __FUNCTION__);
diff -urN linux-2.6.clean/drivers/net/ppp_synctty.c linux-2.6.patched/drivers/net/ppp_synctty.c
--- linux-2.6.clean/drivers/net/ppp_synctty.c 2005-10-05 12:10:42.000000000 -0400
+++ linux-2.6.patched/drivers/net/ppp_synctty.c 2005-10-05 12:36:52.000000000 -0400
@@ -43,6 +43,7 @@
#include <linux/ppp_channel.h>
#include <linux/spinlock.h>
#include <linux/init.h>
+#include <linux/digits.h>
#include <asm/uaccess.h>
#include <asm/semaphore.h>
@@ -108,7 +109,6 @@
ppp_print_hex (register __u8 * out, const __u8 * in, int count)
{
register __u8 next_ch;
- static char hex[] = "0123456789ABCDEF";
while (count-- > 0) {
next_ch = *in++;
diff -urN linux-2.6.clean/drivers/net/sk98lin/skge.c linux-2.6.patched/drivers/net/sk98lin/skge.c
--- linux-2.6.clean/drivers/net/sk98lin/skge.c 2005-10-05 12:10:42.000000000 -0400
+++ linux-2.6.patched/drivers/net/sk98lin/skge.c 2005-10-05 12:36:52.000000000 -0400
@@ -113,6 +113,7 @@
#include <linux/init.h>
#include <linux/proc_fs.h>
#include <linux/dma-mapping.h>
+#include <linux/digits.h>
#include "h/skdrv1st.h"
#include "h/skdrv2nd.h"
@@ -4810,7 +4811,6 @@
int haddr, addr;
char hex_buffer[180];
char asc_buffer[180];
-char HEXCHAR[] = "0123456789ABCDEF";
addr = 0;
haddr = 0;
@@ -4823,9 +4823,9 @@
asc_buffer[addr] = '.';
addr++;
asc_buffer[addr] = 0;
- hex_buffer[haddr] = HEXCHAR[(*p & 0xf0) >> 4];
+ hex_buffer[haddr] = HEX[(*p & 0xf0) >> 4];
haddr++;
- hex_buffer[haddr] = HEXCHAR[*p & 0x0f];
+ hex_buffer[haddr] = HEX[*p & 0x0f];
haddr++;
hex_buffer[haddr] = ' ';
haddr++;
@@ -4858,7 +4858,7 @@
int haddr, addr;
char hex_buffer[180];
char asc_buffer[180];
-char HEXCHAR[] = "0123456789ABCDEF";
+char HEX[] = "0123456789ABCDEF";
long *p;
int l;
@@ -4869,21 +4869,21 @@
p = (long*) pc;
for (i=0; i < size; ) {
l = (long) *p;
- hex_buffer[haddr] = HEXCHAR[(l >> 28) & 0xf];
+ hex_buffer[haddr] = HEX[(l >> 28) & 0xf];
haddr++;
- hex_buffer[haddr] = HEXCHAR[(l >> 24) & 0xf];
+ hex_buffer[haddr] = HEX[(l >> 24) & 0xf];
haddr++;
- hex_buffer[haddr] = HEXCHAR[(l >> 20) & 0xf];
+ hex_buffer[haddr] = HEX[(l >> 20) & 0xf];
haddr++;
- hex_buffer[haddr] = HEXCHAR[(l >> 16) & 0xf];
+ hex_buffer[haddr] = HEX[(l >> 16) & 0xf];
haddr++;
- hex_buffer[haddr] = HEXCHAR[(l >> 12) & 0xf];
+ hex_buffer[haddr] = HEX[(l >> 12) & 0xf];
haddr++;
- hex_buffer[haddr] = HEXCHAR[(l >> 8) & 0xf];
+ hex_buffer[haddr] = HEX[(l >> 8) & 0xf];
haddr++;
- hex_buffer[haddr] = HEXCHAR[(l >> 4) & 0xf];
+ hex_buffer[haddr] = HEX[(l >> 4) & 0xf];
haddr++;
- hex_buffer[haddr] = HEXCHAR[l & 0x0f];
+ hex_buffer[haddr] = HEX[l & 0x0f];
haddr++;
hex_buffer[haddr] = ' ';
haddr++;
diff -urN linux-2.6.clean/drivers/net/skfp/smt.c linux-2.6.patched/drivers/net/skfp/smt.c
--- linux-2.6.clean/drivers/net/skfp/smt.c 2005-10-05 12:10:42.000000000 -0400
+++ linux-2.6.patched/drivers/net/skfp/smt.c 2005-10-05 12:36:52.000000000 -0400
@@ -1731,7 +1731,8 @@
#endif
#ifdef DEBUG
-#define hextoasc(x) "0123456789abcdef"[x]
+#include <linux/digits.h>
+#define hextoasc(x) hex[x]
char *addr_to_string(struct fddi_addr *addr)
{
diff -urN linux-2.6.clean/drivers/net/wireless/strip.c linux-2.6.patched/drivers/net/wireless/strip.c
--- linux-2.6.clean/drivers/net/wireless/strip.c 2005-10-05 12:10:43.000000000 -0400
+++ linux-2.6.patched/drivers/net/wireless/strip.c 2005-10-05 12:36:53.000000000 -0400
@@ -107,6 +107,7 @@
#include <linux/serial.h>
#include <linux/serialP.h>
#include <linux/rcupdate.h>
+#include <linux/digits.h>
#include <net/arp.h>
#include <linux/ip.h>
@@ -404,8 +405,6 @@
(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} };
@@ -1292,13 +1291,13 @@
__u8 *p = buffer;
while (p < end)
sum += *p++;
- end[3] = hextable[sum & 0xF];
+ end[3] = HEX[sum & 0xF];
sum >>= 4;
- end[2] = hextable[sum & 0xF];
+ end[2] = HEX[sum & 0xF];
sum >>= 4;
- end[1] = hextable[sum & 0xF];
+ end[1] = HEX[sum & 0xF];
sum >>= 4;
- end[0] = hextable[sum & 0xF];
+ end[0] = HEX[sum & 0xF];
return (end + 4);
}
@@ -1379,15 +1378,15 @@
*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++ = HEX[haddr.c[2] >> 4];
+ *ptr++ = HEX[haddr.c[2] & 0xF];
+ *ptr++ = HEX[haddr.c[3] >> 4];
+ *ptr++ = HEX[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++ = HEX[haddr.c[4] >> 4];
+ *ptr++ = HEX[haddr.c[4] & 0xF];
+ *ptr++ = HEX[haddr.c[5] >> 4];
+ *ptr++ = HEX[haddr.c[5] & 0xF];
*ptr++ = '*';
*ptr++ = key.c[0];
*ptr++ = key.c[1];
diff -urN linux-2.6.clean/drivers/pnp/pnpbios/rsparser.c linux-2.6.patched/drivers/pnp/pnpbios/rsparser.c
--- linux-2.6.clean/drivers/pnp/pnpbios/rsparser.c 2005-10-05 12:10:44.000000000 -0400
+++ linux-2.6.patched/drivers/pnp/pnpbios/rsparser.c 2005-10-05 12:36:53.000000000 -0400
@@ -7,6 +7,7 @@
#include <linux/ctype.h>
#include <linux/pnp.h>
#include <linux/pnpbios.h>
+#include <linux/digits.h>
#ifdef CONFIG_PCI
#include <linux/pci.h>
@@ -481,8 +482,6 @@
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);
diff -urN linux-2.6.clean/drivers/scsi/ibmmca.c linux-2.6.patched/drivers/scsi/ibmmca.c
--- linux-2.6.clean/drivers/scsi/ibmmca.c 2005-10-05 12:10:45.000000000 -0400
+++ linux-2.6.patched/drivers/scsi/ibmmca.c 2005-10-05 12:36:53.000000000 -0400
@@ -39,6 +39,7 @@
#include <linux/spinlock.h>
#include <linux/init.h>
#include <linux/mca-legacy.h>
+#include <linux/digits.h>
#include <asm/system.h>
#include <asm/io.h>
@@ -1007,7 +1008,6 @@
/* 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);
diff -urN linux-2.6.clean/drivers/scsi/ultrastor.c linux-2.6.patched/drivers/scsi/ultrastor.c
--- linux-2.6.clean/drivers/scsi/ultrastor.c 2005-10-05 12:10:46.000000000 -0400
+++ linux-2.6.patched/drivers/scsi/ultrastor.c 2005-10-05 12:36:54.000000000 -0400
@@ -138,6 +138,7 @@
#include <linux/spinlock.h>
#include <linux/stat.h>
#include <linux/bitops.h>
+#include <linux/digits.h>
#include <asm/io.h>
#include <asm/system.h>
@@ -869,8 +870,8 @@
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] = hex[p >> 4];
+ out[29 + i * 3] = hex[p & 15];
out[30 + i * 3] = ' ';
}
out[28 + i * 3] = '\n';
diff -urN linux-2.6.clean/drivers/serial/sh-sci.c linux-2.6.patched/drivers/serial/sh-sci.c
--- linux-2.6.clean/drivers/serial/sh-sci.c 2005-10-05 12:10:46.000000000 -0400
+++ linux-2.6.patched/drivers/serial/sh-sci.c 2005-10-05 12:36:54.000000000 -0400
@@ -42,6 +42,7 @@
#include <linux/delay.h>
#include <linux/console.h>
#include <linux/bitops.h>
+#include <linux/digits.h>
#ifdef CONFIG_CPU_FREQ
#include <linux/notifier.h>
@@ -119,16 +120,14 @@
}
/* 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 hex[(x >> 4) & 0xf];
}
static __inline__ char lowhex(int x)
{
- return hexchars[x & 0xf];
+ return hex[x & 0xf];
}
#endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */
diff -urN linux-2.6.clean/fs/udf/unicode.c linux-2.6.patched/fs/udf/unicode.c
--- linux-2.6.clean/fs/udf/unicode.c 2005-10-05 12:10:49.000000000 -0400
+++ linux-2.6.patched/fs/udf/unicode.c 2005-10-05 12:36:55.000000000 -0400
@@ -29,6 +29,7 @@
#include <linux/string.h> /* for memset */
#include <linux/nls.h>
#include <linux/udf_fs.h>
+#include <linux/digits.h>
#include "udf_sb.h"
@@ -427,7 +428,6 @@
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 +500,10 @@
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++] = HEX[(valueCRC & 0xf000) >> 12];
+ newName[newIndex++] = HEX[(valueCRC & 0x0f00) >> 8];
+ newName[newIndex++] = HEX[(valueCRC & 0x00f0) >> 4];
+ newName[newIndex++] = HEX[(valueCRC & 0x000f)];
if (hasExt)
{
diff -urN linux-2.6.clean/include/linux/digits.h linux-2.6.patched/include/linux/digits.h
--- linux-2.6.clean/include/linux/digits.h 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.patched/include/linux/digits.h 2005-10-05 12:44:46.000000000 -0400
@@ -0,0 +1,15 @@
+/* include/linux/digits.h
+ *
+ * Contains extern definitions for ascii representation of hex or decimal
+ * variables.
+ *
+ * Oct. 4, 2005 Masoud Sharbiani <masouds@masoud.ir>
+ * This source code is licensed under the GNU General Public License,
+ * Version 2. See the file COPYING for more details.
+ *
+ */
+
+extern unsigned char *hex;
+extern unsigned char *HEX;
+extern unsigned char *decimal;
+
diff -urN linux-2.6.clean/kernel/audit.c linux-2.6.patched/kernel/audit.c
--- linux-2.6.clean/kernel/audit.c 2005-10-05 12:10:54.000000000 -0400
+++ linux-2.6.patched/kernel/audit.c 2005-10-05 12:36:59.000000000 -0400
@@ -54,6 +54,7 @@
#include <net/sock.h>
#include <linux/skbuff.h>
#include <linux/netlink.h>
+#include <linux/digits.h>
/* No auditing will take place until audit_initialized != 0.
* (Initialization happens after skb_init is called.) */
@@ -787,7 +788,6 @@
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 +803,8 @@
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++ = HEX[(buf[i] & 0xF0)>>4]; /* Upper nibble */
+ *ptr++ = HEX[buf[i] & 0x0F]; /* Lower nibble */
}
*ptr = 0;
skb_put(skb, len << 1); /* new string is twice the old string */
diff -urN linux-2.6.clean/lib/digits.c linux-2.6.patched/lib/digits.c
--- linux-2.6.clean/lib/digits.c 1969-12-31 19:00:00.000000000 -0500
+++ linux-2.6.patched/lib/digits.c 2005-10-05 12:36:59.000000000 -0400
@@ -0,0 +1,20 @@
+/*
+ * linux/lib/digits.c
+ * Contains string definitions of hex and decimal digits. Created to consolidate
+ * all of the instances from all over the place.
+ *
+ * Oct. 4, 2005 Masoud Sharbiani <masouds@masoud.ir>
+ * This source code is licensed under the GNU General Public License,
+ * Version 2. See the file COPYING for more details.
+ *
+ */
+
+#include <linux/module.h>
+
+const unsigned char hex[] = "0123456789abcdef";
+const unsigned char decimal[] = "0123456789";
+const unsigned char HEX[] = "0123456789ABCDEF";
+
+EXPORT_SYMBOL(hex);
+EXPORT_SYMBOL(decimal);
+EXPORT_SYMBOL(HEX);
diff -urN linux-2.6.clean/lib/Makefile linux-2.6.patched/lib/Makefile
--- linux-2.6.clean/lib/Makefile 2005-10-05 12:10:54.000000000 -0400
+++ linux-2.6.patched/lib/Makefile 2005-10-05 12:36:59.000000000 -0400
@@ -9,7 +9,7 @@
lib-y += kobject.o kref.o kobject_uevent.o klist.o
-obj-y += sort.o parser.o halfmd4.o
+obj-y += sort.o parser.o halfmd4.o digits.o
ifeq ($(CONFIG_DEBUG_KOBJECT),y)
CFLAGS_kobject.o += -DDEBUG
diff -urN linux-2.6.clean/net/ipv4/arp.c linux-2.6.patched/net/ipv4/arp.c
--- linux-2.6.clean/net/ipv4/arp.c 2005-10-05 12:10:54.000000000 -0400
+++ linux-2.6.patched/net/ipv4/arp.c 2005-10-05 12:36:59.000000000 -0400
@@ -102,6 +102,7 @@
#ifdef CONFIG_SYSCTL
#include <linux/sysctl.h>
#endif
+#include <linux/digits.h>
#include <net/ip.h>
#include <net/icmp.h>
@@ -1291,7 +1292,6 @@
struct neighbour *n)
{
char hbuffer[HBUFFERLEN];
- const char hexbuf[] = "0123456789ABCDEF";
int k, j;
char tbuf[16];
struct net_device *dev = n->dev;
@@ -1305,8 +1305,8 @@
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++] = HEX[(n->ha[j] >> 4) & 15];
+ hbuffer[k++] = HEX[n->ha[j] & 15];
hbuffer[k++] = ':';
}
hbuffer[--k] = 0;
diff -urN linux-2.6.clean/net/ipv4/netfilter/ipt_CLUSTERIP.c linux-2.6.patched/net/ipv4/netfilter/ipt_CLUSTERIP.c
--- linux-2.6.clean/net/ipv4/netfilter/ipt_CLUSTERIP.c 2005-10-05 12:10:55.000000000 -0400
+++ linux-2.6.patched/net/ipv4/netfilter/ipt_CLUSTERIP.c 2005-10-05 12:36:59.000000000 -0400
@@ -22,6 +22,7 @@
#include <linux/if_arp.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
+#include <linux/digits.h>
#include <net/checksum.h>
@@ -502,11 +503,10 @@
#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++]=hex[(payload->src_hw[j]>>4)&15];
+ hbuffer[k++]=hex[payload->src_hw[j]&15];
hbuffer[k++]=':';
}
hbuffer[--k]='\0';
[-- Attachment #2: Type: text/plain, Size: 168 bytes --]
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/kernel-janitors
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [KJ] hexdigits definition consolidation
2005-10-05 17:01 [KJ] hexdigits definition consolidation Masoud Sharbiani
@ 2005-10-05 17:25 ` Matthew Wilcox
0 siblings, 0 replies; 2+ messages in thread
From: Matthew Wilcox @ 2005-10-05 17:25 UTC (permalink / raw)
To: kernel-janitors
[-- Attachment #1: Type: text/plain, Size: 52362 bytes --]
On Wed, Oct 05, 2005 at 01:01:41PM -0400, Masoud Sharbiani wrote:
> Hello,
> The following patch consolidates several definitions of hex digits as string that are spread throughout the kernel and drivers.
> I had to create a separate file in lib/ directory to hold the actual values, and EXPORT_SYMBOL them them so that they could be used by modules.
Definitely something worth looking at consolidating. Some comments
though ...
- vsprintf.c contains a routine ('number') which actually handles
multiple bases. It should be consolidated with this.
- Instead of introducing a new lib file and a new header file, how
about exporting all this via vsprintf.c and <linux/kernel.h>?
- I prefer the longer names 'hexchar' to just 'hex'.
- A lot of these look like open coded versions of using
sprintf(dest, "%x", arg);
- Some seem to be unnecessary implementations of common library
functions. eg gdb_cris_strtol() could use simple_strtol() instead.
>
> cheers,
> Masoud
>
> Signed-off-by: Masoud A Sharbiani <masouds@masoud.ir>
>
>
> diff -urN linux-2.6.clean/arch/cris/arch-v10/kernel/kgdb.c linux-2.6.patched/arch/cris/arch-v10/kernel/kgdb.c
> --- linux-2.6.clean/arch/cris/arch-v10/kernel/kgdb.c 2005-10-05 12:10:36.000000000 -0400
> +++ linux-2.6.patched/arch/cris/arch-v10/kernel/kgdb.c 2005-10-05 12:36:48.000000000 -0400
> @@ -230,6 +230,7 @@
> #include <linux/delay.h>
> #include <linux/linkage.h>
> #include <linux/reboot.h>
> +#include <linux/digits.h>
>
> #include <asm/setup.h>
> #include <asm/ptrace.h>
> @@ -415,7 +416,6 @@
> #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 +557,8 @@
> 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(hex, *s1, base)) != NULL; ++s1)
> + x = x * base + (sd - hex);
>
> if (endptr)
> {
> diff -urN linux-2.6.clean/arch/cris/arch-v32/kernel/kgdb.c linux-2.6.patched/arch/cris/arch-v32/kernel/kgdb.c
> --- linux-2.6.clean/arch/cris/arch-v32/kernel/kgdb.c 2005-10-05 12:10:36.000000000 -0400
> +++ linux-2.6.patched/arch/cris/arch-v32/kernel/kgdb.c 2005-10-05 12:36:48.000000000 -0400
> @@ -169,6 +169,7 @@
> #include <linux/delay.h>
> #include <linux/linkage.h>
> #include <linux/reboot.h>
> +#include <linux/digits.h>
>
> #include <asm/setup.h>
> #include <asm/ptrace.h>
> @@ -465,7 +466,6 @@
> #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 +550,8 @@
> 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(hex, *s1, base)) != NULL; ++s1)
> + x = x * base + (sd - hex);
>
> if (endptr) {
> /* Unconverted suffix is stored in endptr unless endptr is NULL. */
> @@ -660,7 +660,7 @@
> static inline char
> highhex(int x)
> {
> - return hexchars[(x >> 4) & 0xf];
> + return hex[(x >> 4) & 0xf];
> }
>
> /* Returns the character equivalent of a nibble, bit 3, 2, 1, and 0 of a byte,
> @@ -668,7 +668,7 @@
> static inline char
> lowhex(int x)
> {
> - return hexchars[x & 0xf];
> + return hex[x & 0xf];
> }
>
> /* Returns the integer equivalent of a hexadecimal character. */
> diff -urN linux-2.6.clean/arch/frv/kernel/gdb-stub.c linux-2.6.patched/arch/frv/kernel/gdb-stub.c
> --- linux-2.6.clean/arch/frv/kernel/gdb-stub.c 2005-10-05 12:10:36.000000000 -0400
> +++ linux-2.6.patched/arch/frv/kernel/gdb-stub.c 2005-10-05 12:36:48.000000000 -0400
> @@ -123,6 +123,7 @@
> #include <linux/init.h>
> #include <linux/slab.h>
> #include <linux/nmi.h>
> +#include <linux/digits.h>
>
> #include <asm/pgtable.h>
> #include <asm/system.h>
> @@ -182,8 +183,6 @@
> 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 +382,8 @@
> }
>
> gdbstub_tx_char('#');
> - gdbstub_tx_char(hexchars[checksum >> 4]);
> - gdbstub_tx_char(hexchars[checksum & 0xf]);
> + gdbstub_tx_char(hex[checksum >> 4]);
> + gdbstub_tx_char(hex[checksum & 0xf]);
>
> } while (gdbstub_rx_char(&ch,0),
> #ifdef GDBSTUB_DEBUG_PROTOCOL
> @@ -680,8 +679,8 @@
> 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++ = hex[ch[0] >> 4];
> + *buf++ = hex[ch[0] & 0xf];
> mem++;
> count--;
> }
> @@ -689,10 +688,10 @@
> 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++ = hex[ch[0] >> 4];
> + *buf++ = hex[ch[0] & 0xf];
> + *buf++ = hex[ch[1] >> 4];
> + *buf++ = hex[ch[1] & 0xf];
> mem += 2;
> count -= 2;
> }
> @@ -700,14 +699,14 @@
> 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++ = hex[ch[0] >> 4];
> + *buf++ = hex[ch[0] & 0xf];
> + *buf++ = hex[ch[1] >> 4];
> + *buf++ = hex[ch[1] & 0xf];
> + *buf++ = hex[ch[2] >> 4];
> + *buf++ = hex[ch[2] & 0xf];
> + *buf++ = hex[ch[3] >> 4];
> + *buf++ = hex[ch[3] & 0xf];
> mem += 4;
> count -= 4;
> }
> @@ -715,10 +714,10 @@
> 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++ = hex[ch[0] >> 4];
> + *buf++ = hex[ch[0] & 0xf];
> + *buf++ = hex[ch[1] >> 4];
> + *buf++ = hex[ch[1] & 0xf];
> mem += 2;
> count -= 2;
> }
> @@ -726,8 +725,8 @@
> if (count>=1) {
> if (!gdbstub_read_byte(mem,ch))
> return NULL;
> - *buf++ = hexchars[ch[0] >> 4];
> - *buf++ = hexchars[ch[0] & 0xf];
> + *buf++ = hex[ch[0] >> 4];
> + *buf++ = hex[ch[0] & 0xf];
> }
>
> *buf = 0;
> @@ -1448,22 +1447,22 @@
> *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 = hex[(brr & 0xf0000000) >> 28];
> + *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
> + hx = hex[(brr & 0x0f000000) >> 24];
> + *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
> + hx = hex[(brr & 0x00f00000) >> 20];
> + *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
> + hx = hex[(brr & 0x000f0000) >> 16];
> + *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
> + hx = hex[(brr & 0x0000f000) >> 12];
> + *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
> + hx = hex[(brr & 0x00000f00) >> 8];
> + *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
> + hx = hex[(brr & 0x000000f0) >> 4];
> + *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
> + hx = hex[(brr & 0x0000000f)];
> + *ptr++ = hex[hx >> 4]; *ptr++ = hex[hx & 0xf];
>
> ptr = mem2hex(crlf, ptr, sizeof(crlf) - 1, 0);
> *ptr = 0;
> @@ -1477,12 +1476,12 @@
>
> /* Send trap type (converted to signal) */
> *ptr++ = 'T';
> - *ptr++ = hexchars[sigval >> 4];
> - *ptr++ = hexchars[sigval & 0xf];
> + *ptr++ = hex[sigval >> 4];
> + *ptr++ = hex[sigval & 0xf];
>
> /* Send Error PC */
> - *ptr++ = hexchars[GDB_REG_PC >> 4];
> - *ptr++ = hexchars[GDB_REG_PC & 0xf];
> + *ptr++ = hex[GDB_REG_PC >> 4];
> + *ptr++ = hex[GDB_REG_PC & 0xf];
> *ptr++ = ':';
> ptr = mem2hex(&__debug_frame->pc, ptr, 4, 0);
> *ptr++ = ';';
> @@ -1490,8 +1489,8 @@
> /*
> * Send frame pointer
> */
> - *ptr++ = hexchars[GDB_REG_FP >> 4];
> - *ptr++ = hexchars[GDB_REG_FP & 0xf];
> + *ptr++ = hex[GDB_REG_FP >> 4];
> + *ptr++ = hex[GDB_REG_FP & 0xf];
> *ptr++ = ':';
> ptr = mem2hex(&__debug_frame->fp, ptr, 4, 0);
> *ptr++ = ';';
> @@ -1499,8 +1498,8 @@
> /*
> * Send stack pointer
> */
> - *ptr++ = hexchars[GDB_REG_SP >> 4];
> - *ptr++ = hexchars[GDB_REG_SP & 0xf];
> + *ptr++ = hex[GDB_REG_SP >> 4];
> + *ptr++ = hex[GDB_REG_SP & 0xf];
> *ptr++ = ':';
> ptr = mem2hex(&__debug_frame->sp, ptr, 4, 0);
> *ptr++ = ';';
> @@ -1525,8 +1524,8 @@
> /* 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] = hex[sigval >> 4];
> + output_buffer[2] = hex[sigval & 0xf];
> output_buffer[3] = 0;
> break;
>
> @@ -2044,8 +2043,8 @@
> }
>
> gdbstub_tx_char('#');
> - gdbstub_tx_char(hexchars[checksum >> 4]);
> - gdbstub_tx_char(hexchars[checksum & 0xf]);
> + gdbstub_tx_char(hex[checksum >> 4]);
> + gdbstub_tx_char(hex[checksum & 0xf]);
>
> /* make sure the output is flushed, or else RedBoot might clobber it */
> gdbstub_tx_char('-');
> diff -urN linux-2.6.clean/arch/mips/au1000/common/puts.c linux-2.6.patched/arch/mips/au1000/common/puts.c
> --- linux-2.6.clean/arch/mips/au1000/common/puts.c 2005-10-05 12:10:37.000000000 -0400
> +++ linux-2.6.patched/arch/mips/au1000/common/puts.c 2005-10-05 12:36:48.000000000 -0400
> @@ -39,7 +39,6 @@
> #define TIMEOUT 0xffffff
> #define SLOW_DOWN
>
> -static const char digits[16] = "0123456789abcdef";
> static volatile unsigned long * const com1 = (unsigned long *)SERIAL_BASE;
>
>
> @@ -124,7 +123,7 @@
> do {
> cnt--;
> ch = (unsigned char)(ul >> cnt * 4) & 0x0F;
> - putch(digits[ch]);
> + putch(hex[ch]);
> } while (cnt > 0);
> }
>
> @@ -140,6 +139,6 @@
> do {
> cnt--;
> ch = (unsigned char)(u >> cnt * 4) & 0x0F;
> - putch(digits[ch]);
> + putch(hex[ch]);
> } while (cnt > 0);
> }
> diff -urN linux-2.6.clean/arch/mips/galileo-boards/ev96100/puts.c linux-2.6.patched/arch/mips/galileo-boards/ev96100/puts.c
> --- linux-2.6.clean/arch/mips/galileo-boards/ev96100/puts.c 2005-10-05 12:10:37.000000000 -0400
> +++ linux-2.6.patched/arch/mips/galileo-boards/ev96100/puts.c 2005-10-05 12:36:48.000000000 -0400
> @@ -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 @@
> do {
> cnt--;
> ch = (unsigned char) (ul >> cnt * 4) & 0x0F;
> - putch(digits[ch]);
> + putch(hex[ch]);
> } while (cnt > 0);
> }
>
> @@ -133,6 +132,6 @@
> do {
> cnt--;
> ch = (unsigned char) (u >> cnt * 4) & 0x0F;
> - putch(digits[ch]);
> + putch(hex[ch]);
> } while (cnt > 0);
> }
> diff -urN linux-2.6.clean/arch/mips/ite-boards/generic/puts.c linux-2.6.patched/arch/mips/ite-boards/generic/puts.c
> --- linux-2.6.clean/arch/mips/ite-boards/generic/puts.c 2005-10-05 12:10:37.000000000 -0400
> +++ linux-2.6.patched/arch/mips/ite-boards/generic/puts.c 2005-10-05 12:36:48.000000000 -0400
> @@ -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 @@
> do {
> cnt--;
> ch = (unsigned char) (ul >> cnt * 4) & 0x0F;
> - putch(digits[ch]);
> + putch(hex[ch]);
> } while (cnt > 0);
> }
>
> @@ -134,6 +133,6 @@
> do {
> cnt--;
> ch = (unsigned char) (u >> cnt * 4) & 0x0F;
> - putch(digits[ch]);
> + putch(hex[ch]);
> } while (cnt > 0);
> }
> diff -urN linux-2.6.clean/arch/mips/jmr3927/common/puts.c linux-2.6.patched/arch/mips/jmr3927/common/puts.c
> --- linux-2.6.clean/arch/mips/jmr3927/common/puts.c 2005-10-05 12:10:37.000000000 -0400
> +++ linux-2.6.patched/arch/mips/jmr3927/common/puts.c 2005-10-05 12:36:48.000000000 -0400
> @@ -33,6 +33,7 @@
> */
>
> #include <linux/types.h>
> +#include <linux/digits.h>
> #include <asm/jmr3927/txx927.h>
> #include <asm/jmr3927/tx3927.h>
> #include <asm/jmr3927/jmr3927.h>
> @@ -40,8 +41,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 +146,7 @@
> do {
> cnt--;
> ch = (unsigned char)(ul >> cnt * 4) & 0x0F;
> - putch(digits[ch]);
> + putch(hex[ch]);
> } while (cnt > 0);
> }
>
> @@ -163,6 +162,6 @@
> do {
> cnt--;
> ch = (unsigned char)(u >> cnt * 4) & 0x0F;
> - putch(digits[ch]);
> + putch(hex[ch]);
> } while (cnt > 0);
> }
> diff -urN linux-2.6.clean/arch/mips/jmr3927/rbhma3100/kgdb_io.c linux-2.6.patched/arch/mips/jmr3927/rbhma3100/kgdb_io.c
> --- linux-2.6.clean/arch/mips/jmr3927/rbhma3100/kgdb_io.c 2005-10-05 12:10:37.000000000 -0400
> +++ linux-2.6.patched/arch/mips/jmr3927/rbhma3100/kgdb_io.c 2005-10-05 12:36:48.000000000 -0400
> @@ -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
> diff -urN linux-2.6.clean/arch/mips/kernel/gdb-stub.c linux-2.6.patched/arch/mips/kernel/gdb-stub.c
> --- linux-2.6.clean/arch/mips/kernel/gdb-stub.c 2005-10-05 12:10:37.000000000 -0400
> +++ linux-2.6.patched/arch/mips/kernel/gdb-stub.c 2005-10-05 12:36:48.000000000 -0400
> @@ -132,6 +132,7 @@
> #include <linux/spinlock.h>
> #include <linux/slab.h>
> #include <linux/reboot.h>
> +#include <linux/digits.h>
>
> #include <asm/asm.h>
> #include <asm/cacheflush.h>
> @@ -189,7 +190,6 @@
> 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... */
> @@ -305,8 +305,8 @@
> }
>
> putDebugChar('#');
> - putDebugChar(hexchars[checksum >> 4]);
> - putDebugChar(hexchars[checksum & 0xf]);
> + putDebugChar(hex[checksum >> 4]);
> + putDebugChar(hex[checksum & 0xf]);
>
> }
> while ((getDebugChar() & 0x7f) != '+');
> @@ -327,8 +327,8 @@
> while (count-- > 0) {
> if (kgdb_read_byte(mem++, &ch) != 0)
> return 0;
> - *buf++ = hexchars[ch >> 4];
> - *buf++ = hexchars[ch & 0xf];
> + *buf++ = hex[ch >> 4];
> + *buf++ = hex[ch & 0xf];
> }
>
> *buf = 0;
> @@ -748,14 +748,14 @@
> * Send trap type (converted to signal)
> */
> *ptr++ = 'T';
> - *ptr++ = hexchars[sigval >> 4];
> - *ptr++ = hexchars[sigval & 0xf];
> + *ptr++ = hex[sigval >> 4];
> + *ptr++ = hex[sigval & 0xf];
>
> /*
> * Send Error PC
> */
> - *ptr++ = hexchars[REG_EPC >> 4];
> - *ptr++ = hexchars[REG_EPC & 0xf];
> + *ptr++ = hex[REG_EPC >> 4];
> + *ptr++ = hex[REG_EPC & 0xf];
> *ptr++ = ':';
> ptr = mem2hex((char *)®s->cp0_epc, ptr, sizeof(long), 0);
> *ptr++ = ';';
> @@ -763,8 +763,8 @@
> /*
> * Send frame pointer
> */
> - *ptr++ = hexchars[REG_FP >> 4];
> - *ptr++ = hexchars[REG_FP & 0xf];
> + *ptr++ = hex[REG_FP >> 4];
> + *ptr++ = hex[REG_FP & 0xf];
> *ptr++ = ':';
> ptr = mem2hex((char *)®s->reg30, ptr, sizeof(long), 0);
> *ptr++ = ';';
> @@ -772,8 +772,8 @@
> /*
> * Send stack pointer
> */
> - *ptr++ = hexchars[REG_SP >> 4];
> - *ptr++ = hexchars[REG_SP & 0xf];
> + *ptr++ = hex[REG_SP >> 4];
> + *ptr++ = hex[REG_SP & 0xf];
> *ptr++ = ':';
> ptr = mem2hex((char *)®s->reg29, ptr, sizeof(long), 0);
> *ptr++ = ';';
> @@ -792,8 +792,8 @@
> {
> case '?':
> output_buffer[0] = 'S';
> - output_buffer[1] = hexchars[sigval >> 4];
> - output_buffer[2] = hexchars[sigval & 0xf];
> + output_buffer[1] = hex[sigval >> 4];
> + output_buffer[2] = hex[sigval & 0xf];
> output_buffer[3] = 0;
> break;
>
> diff -urN linux-2.6.clean/arch/ppc/boot/common/misc-common.c linux-2.6.patched/arch/ppc/boot/common/misc-common.c
> --- linux-2.6.clean/arch/ppc/boot/common/misc-common.c 2005-10-05 12:10:37.000000000 -0400
> +++ linux-2.6.patched/arch/ppc/boot/common/misc-common.c 2005-10-05 12:36:49.000000000 -0400
> @@ -18,6 +18,7 @@
> #include <linux/config.h>
> #include <linux/string.h>
> #include <linux/zlib.h>
> +#include <linux/digits.h>
> #include "nonstdio.h"
>
> /* If we're on a PReP, assume we have a keyboard controller
> @@ -280,7 +281,7 @@
> int i;
> for (i = 7; i >= 0; i--)
> {
> - buf[i] = "0123456789ABCDEF"[val & 0x0F];
> + buf[i] = hex[val & 0x0F];
> val >>= 4;
> }
> buf[8] = '\0';
> @@ -362,13 +363,13 @@
> sign = '-';
> val = -val;
> }
> - length = _cvt(val, buf, 10, "0123456789");
> + length = _cvt(val, buf, 10, decimal);
> break;
> case 'x':
> - length = _cvt(val, buf, 16, "0123456789abcdef");
> + length = _cvt(val, buf, 16, hex);
> break;
> case 'X':
> - length = _cvt(val, buf, 16, "0123456789ABCDEF");
> + length = _cvt(val, buf, 16, HEX);
> break;
> }
> cp = buf;
> diff -urN linux-2.6.clean/arch/ppc/kernel/ppc-stub.c linux-2.6.patched/arch/ppc/kernel/ppc-stub.c
> --- linux-2.6.clean/arch/ppc/kernel/ppc-stub.c 2005-10-05 12:10:37.000000000 -0400
> +++ linux-2.6.patched/arch/ppc/kernel/ppc-stub.c 2005-10-05 12:36:49.000000000 -0400
> @@ -107,6 +107,7 @@
> #include <linux/smp_lock.h>
> #include <linux/init.h>
> #include <linux/sysrq.h>
> +#include <linux/digits.h>
>
> #include <asm/cacheflush.h>
> #include <asm/system.h>
> @@ -132,7 +133,6 @@
> 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 +206,28 @@
> 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++ = hex[(tmp_s >> 12) & 0xf];
> + *buf++ = hex[(tmp_s >> 8) & 0xf];
> + *buf++ = hex[(tmp_s >> 4) & 0xf];
> + *buf++ = hex[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++ = hex[(tmp_l >> 28) & 0xf];
> + *buf++ = hex[(tmp_l >> 24) & 0xf];
> + *buf++ = hex[(tmp_l >> 20) & 0xf];
> + *buf++ = hex[(tmp_l >> 16) & 0xf];
> + *buf++ = hex[(tmp_l >> 12) & 0xf];
> + *buf++ = hex[(tmp_l >> 8) & 0xf];
> + *buf++ = hex[(tmp_l >> 4) & 0xf];
> + *buf++ = hex[tmp_l & 0xf];
>
> } else {
> while (count-- > 0) {
> ch = *mem++;
> - *buf++ = hexchars[ch >> 4];
> - *buf++ = hexchars[ch & 0xf];
> + *buf++ = hex[ch >> 4];
> + *buf++ = hex[ch & 0xf];
> }
> }
>
> @@ -412,8 +412,8 @@
> }
>
> putDebugChar('#');
> - putDebugChar(hexchars[checksum >> 4]);
> - putDebugChar(hexchars[checksum & 0xf]);
> + putDebugChar(hex[checksum >> 4]);
> + putDebugChar(hex[checksum & 0xf]);
> recv = getDebugChar();
> } while ((recv & 0x7f) != '+');
> }
> @@ -603,15 +603,15 @@
> ptr = remcomOutBuffer;
>
> *ptr++ = 'T';
> - *ptr++ = hexchars[sigval >> 4];
> - *ptr++ = hexchars[sigval & 0xf];
> - *ptr++ = hexchars[PC_REGNUM >> 4];
> - *ptr++ = hexchars[PC_REGNUM & 0xf];
> + *ptr++ = hex[sigval >> 4];
> + *ptr++ = hex[sigval & 0xf];
> + *ptr++ = hex[PC_REGNUM >> 4];
> + *ptr++ = hex[PC_REGNUM & 0xf];
> *ptr++ = ':';
> ptr = mem2hex((char *)®s->nip, ptr, 4);
> *ptr++ = ';';
> - *ptr++ = hexchars[SP_REGNUM >> 4];
> - *ptr++ = hexchars[SP_REGNUM & 0xf];
> + *ptr++ = hex[SP_REGNUM >> 4];
> + *ptr++ = hex[SP_REGNUM & 0xf];
> *ptr++ = ':';
> ptr = mem2hex(((char *)regs) + SP_REGNUM*4, ptr, 4);
> *ptr++ = ';';
> @@ -633,8 +633,8 @@
> switch (remcomInBuffer[0]) {
> case '?': /* report most recent signal */
> remcomOutBuffer[0] = 'S';
> - remcomOutBuffer[1] = hexchars[sigval >> 4];
> - remcomOutBuffer[2] = hexchars[sigval & 0xf];
> + remcomOutBuffer[1] = hex[sigval >> 4];
> + remcomOutBuffer[2] = hex[sigval & 0xf];
> remcomOutBuffer[3] = 0;
> break;
> #if 0
> diff -urN linux-2.6.clean/arch/ppc/kernel/process.c linux-2.6.patched/arch/ppc/kernel/process.c
> --- linux-2.6.clean/arch/ppc/kernel/process.c 2005-10-05 12:10:37.000000000 -0400
> +++ linux-2.6.patched/arch/ppc/kernel/process.c 2005-10-05 12:36:49.000000000 -0400
> @@ -37,6 +37,7 @@
> #include <linux/kallsyms.h>
> #include <linux/mqueue.h>
> #include <linux/hardirq.h>
> +#include <linux/digits.h>
>
> #include <asm/pgtable.h>
> #include <asm/uaccess.h>
> @@ -695,7 +696,7 @@
> int i;
> for (i = 7; i >= 0; i--)
> {
> - buf[i] = "0123456789ABCDEF"[val & 0x0F];
> + buf[i] = HEX[val & 0x0F];
> val >>= 4;
> }
> buf[8] = '\0';
> diff -urN linux-2.6.clean/arch/ppc/platforms/apus_setup.c linux-2.6.patched/arch/ppc/platforms/apus_setup.c
> --- linux-2.6.clean/arch/ppc/platforms/apus_setup.c 2005-10-05 12:10:38.000000000 -0400
> +++ linux-2.6.patched/arch/ppc/platforms/apus_setup.c 2005-10-05 12:36:49.000000000 -0400
> @@ -19,6 +19,7 @@
> #include <linux/init.h>
> #include <linux/initrd.h>
> #include <linux/seq_file.h>
> +#include <linux/digits.h>
>
> /* Needs INITSERIAL call in head.S! */
> #undef APUS_DEBUG
> @@ -627,10 +628,9 @@
> 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(HEX[(x >> 28) & 15]);
> x <<= 4;
> }
> __debug_ser_out('\n');
> diff -urN linux-2.6.clean/arch/ppc/platforms/residual.c linux-2.6.patched/arch/ppc/platforms/residual.c
> --- linux-2.6.clean/arch/ppc/platforms/residual.c 2005-10-05 12:10:38.000000000 -0400
> +++ linux-2.6.patched/arch/ppc/platforms/residual.c 2005-10-05 12:36:49.000000000 -0400
> @@ -17,6 +17,7 @@
> */
>
> #include <linux/string.h>
> +#include <linux/digits.h>
> #include <asm/residual.h>
> #include <asm/pnp.h>
> #include <asm/byteorder.h>
> @@ -770,15 +771,14 @@
> 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;
> + (HEX[(Number>>12)&0x0f] == str[3]) &&
> + (HEX[(Number>>8)&0x0f] == str[4]) &&
> + (HEX[(Number>>4)&0x0f] == str[5]) &&
> + (HEX[Number&0x0f] == str[6]) ) return 1;
> return 0;
> }
>
> diff -urN linux-2.6.clean/arch/ppc/syslib/btext.c linux-2.6.patched/arch/ppc/syslib/btext.c
> --- linux-2.6.clean/arch/ppc/syslib/btext.c 2005-10-05 12:10:38.000000000 -0400
> +++ linux-2.6.patched/arch/ppc/syslib/btext.c 2005-10-05 12:36:49.000000000 -0400
> @@ -8,6 +8,7 @@
> #include <linux/string.h>
> #include <linux/init.h>
> #include <linux/version.h>
> +#include <linux/digits.h>
>
> #include <asm/sections.h>
> #include <asm/bootx.h>
> @@ -392,18 +393,17 @@
> 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(hex[(v >> 28) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 24) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 20) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 16) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 12) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 8) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 4) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 0) & 0x0000000FUL]);
> btext_drawchar(' ');
> }
>
> diff -urN linux-2.6.clean/arch/ppc64/kernel/btext.c linux-2.6.patched/arch/ppc64/kernel/btext.c
> --- linux-2.6.clean/arch/ppc64/kernel/btext.c 2005-10-05 12:10:38.000000000 -0400
> +++ linux-2.6.patched/arch/ppc64/kernel/btext.c 2005-10-05 12:36:49.000000000 -0400
> @@ -7,6 +7,7 @@
> #include <linux/kernel.h>
> #include <linux/string.h>
> #include <linux/init.h>
> +#include <linux/digits.h>
>
> #include <asm/sections.h>
> #include <asm/prom.h>
> @@ -278,26 +279,24 @@
>
> void btext_drawhex(unsigned long v)
> {
> - char *hex_table = "0123456789abcdef";
> -
> if (!boot_text_mapped)
> return;
> - btext_drawchar(hex_table[(v >> 60) & 0x0000000FUL]);
> - btext_drawchar(hex_table[(v >> 56) & 0x0000000FUL]);
> - btext_drawchar(hex_table[(v >> 52) & 0x0000000FUL]);
> - btext_drawchar(hex_table[(v >> 48) & 0x0000000FUL]);
> - btext_drawchar(hex_table[(v >> 44) & 0x0000000FUL]);
> - btext_drawchar(hex_table[(v >> 40) & 0x0000000FUL]);
> - btext_drawchar(hex_table[(v >> 36) & 0x0000000FUL]);
> - btext_drawchar(hex_table[(v >> 32) & 0x0000000FUL]);
> - 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(hex[(v >> 60) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 56) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 52) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 48) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 44) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 40) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 36) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 32) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 28) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 24) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 20) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 16) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 12) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 8) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 4) & 0x0000000FUL]);
> + btext_drawchar(hex[(v >> 0) & 0x0000000FUL]);
> btext_drawchar(' ');
> }
>
> diff -urN linux-2.6.clean/arch/ppc64/kernel/mf.c linux-2.6.patched/arch/ppc64/kernel/mf.c
> --- linux-2.6.clean/arch/ppc64/kernel/mf.c 2005-10-05 12:10:38.000000000 -0400
> +++ linux-2.6.patched/arch/ppc64/kernel/mf.c 2005-10-05 12:36:49.000000000 -0400
> @@ -33,6 +33,7 @@
> #include <linux/delay.h>
> #include <linux/dma-mapping.h>
> #include <linux/bcd.h>
> +#include <linux/digits.h>
>
> #include <asm/time.h>
> #include <asm/uaccess.h>
> @@ -643,10 +644,10 @@
> 72);
> src[6] = value >> 8;
> src[7] = value & 255;
> - src[44] = "0123456789ABCDEF"[(value >> 12) & 15];
> - src[45] = "0123456789ABCDEF"[(value >> 8) & 15];
> - src[46] = "0123456789ABCDEF"[(value >> 4) & 15];
> - src[47] = "0123456789ABCDEF"[value & 15];
> + src[44] = HEX[(value >> 12) & 15];
> + src[45] = HEX[(value >> 8) & 15];
> + src[46] = HEX[(value >> 4) & 15];
> + src[47] = HEX[value & 15];
> dma_and_signal_ce_msg(ce, NULL, src, sizeof(src), 9 * 64 * 1024);
> }
>
> diff -urN linux-2.6.clean/arch/sh/kernel/kgdb_stub.c linux-2.6.patched/arch/sh/kernel/kgdb_stub.c
> --- linux-2.6.clean/arch/sh/kernel/kgdb_stub.c 2005-10-05 12:10:38.000000000 -0400
> +++ linux-2.6.patched/arch/sh/kernel/kgdb_stub.c 2005-10-05 12:36:49.000000000 -0400
> @@ -100,6 +100,7 @@
> #include <linux/delay.h>
> #include <linux/linkage.h>
> #include <linux/init.h>
> +#include <linux/digits.h>
>
> #include <asm/system.h>
> #include <asm/current.h>
> @@ -240,7 +241,6 @@
> /* 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 +268,13 @@
> /* Get high hex bits */
> static char highhex(const int x)
> {
> - return hexchars[(x >> 4) & 0xf];
> + return hex[(x >> 4) & 0xf];
> }
>
> /* Get low hex bits */
> static char lowhex(const int x)
> {
> - return hexchars[x & 0xf];
> + return hex[x & 0xf];
> }
>
> /* Convert ch to hex */
> @@ -367,8 +367,8 @@
> /* Pack a hex byte */
> static char *pack_hex_byte(char *pkt, int byte)
> {
> - *pkt++ = hexchars[(byte >> 4) & 0xf];
> - *pkt++ = hexchars[(byte & 0xf)];
> + *pkt++ = hex[(byte >> 4) & 0xf];
> + *pkt++ = hex[(byte & 0xf)];
> return pkt;
> }
>
> diff -urN linux-2.6.clean/arch/sparc/kernel/sparc-stub.c linux-2.6.patched/arch/sparc/kernel/sparc-stub.c
> --- linux-2.6.clean/arch/sparc/kernel/sparc-stub.c 2005-10-05 12:10:38.000000000 -0400
> +++ linux-2.6.patched/arch/sparc/kernel/sparc-stub.c 2005-10-05 12:36:49.000000000 -0400
> @@ -99,6 +99,7 @@
> #include <linux/mm.h>
> #include <linux/smp.h>
> #include <linux/smp_lock.h>
> +#include <linux/digits.h>
>
> #include <asm/system.h>
> #include <asm/signal.h>
> @@ -127,8 +128,6 @@
>
> static int initialized; /* !0 means we've been initialized */
>
> -static const char hexchars[]="0123456789abcdef";
> -
> #define NUMREGS 72
>
> /* Number of bytes of registers. */
> @@ -298,8 +297,8 @@
> }
>
> putDebugChar('#');
> - putDebugChar(hexchars[checksum >> 4]);
> - putDebugChar(hexchars[checksum & 0xf]);
> + putDebugChar(hex[checksum >> 4]);
> + putDebugChar(hex[checksum & 0xf]);
> recv = getDebugChar();
> } while ((recv & 0x7f) != '+');
> }
> @@ -337,8 +336,8 @@
> ".word 1b, 2b\n\t"
> ".text\n"
> : "=r" (mem), "=r" (ch) : "0" (mem));
> - *buf++ = hexchars[ch >> 4];
> - *buf++ = hexchars[ch & 0xf];
> + *buf++ = hex[ch >> 4];
> + *buf++ = hex[ch & 0xf];
> }
>
> *buf = 0;
> @@ -527,35 +526,35 @@
> ptr = remcomOutBuffer;
>
> *ptr++ = 'T';
> - *ptr++ = hexchars[sigval >> 4];
> - *ptr++ = hexchars[sigval & 0xf];
> + *ptr++ = hex[sigval >> 4];
> + *ptr++ = hex[sigval & 0xf];
>
> - *ptr++ = hexchars[PC >> 4];
> - *ptr++ = hexchars[PC & 0xf];
> + *ptr++ = hex[PC >> 4];
> + *ptr++ = hex[PC & 0xf];
> *ptr++ = ':';
> ptr = mem2hex((char *)®isters[PC], ptr, 4);
> *ptr++ = ';';
>
> - *ptr++ = hexchars[FP >> 4];
> - *ptr++ = hexchars[FP & 0xf];
> + *ptr++ = hex[FP >> 4];
> + *ptr++ = hex[FP & 0xf];
> *ptr++ = ':';
> ptr = mem2hex((char *) (sp + 8 + 6), ptr, 4); /* FP */
> *ptr++ = ';';
>
> - *ptr++ = hexchars[SP >> 4];
> - *ptr++ = hexchars[SP & 0xf];
> + *ptr++ = hex[SP >> 4];
> + *ptr++ = hex[SP & 0xf];
> *ptr++ = ':';
> ptr = mem2hex((char *)&sp, ptr, 4);
> *ptr++ = ';';
>
> - *ptr++ = hexchars[NPC >> 4];
> - *ptr++ = hexchars[NPC & 0xf];
> + *ptr++ = hex[NPC >> 4];
> + *ptr++ = hex[NPC & 0xf];
> *ptr++ = ':';
> ptr = mem2hex((char *)®isters[NPC], ptr, 4);
> *ptr++ = ';';
>
> - *ptr++ = hexchars[O7 >> 4];
> - *ptr++ = hexchars[O7 & 0xf];
> + *ptr++ = hex[O7 >> 4];
> + *ptr++ = hex[O7 & 0xf];
> *ptr++ = ':';
> ptr = mem2hex((char *)®isters[O7], ptr, 4);
> *ptr++ = ';';
> @@ -577,8 +576,8 @@
> switch (remcomInBuffer[0]) {
> case '?':
> remcomOutBuffer[0] = 'S';
> - remcomOutBuffer[1] = hexchars[sigval >> 4];
> - remcomOutBuffer[2] = hexchars[sigval & 0xf];
> + remcomOutBuffer[1] = hex[sigval >> 4];
> + remcomOutBuffer[2] = hex[sigval & 0xf];
> remcomOutBuffer[3] = 0;
> break;
>
> diff -urN linux-2.6.clean/drivers/ide/ide.c linux-2.6.patched/drivers/ide/ide.c
> --- linux-2.6.clean/drivers/ide/ide.c 2005-10-05 12:10:40.000000000 -0400
> +++ linux-2.6.patched/drivers/ide/ide.c 2005-10-05 12:37:59.000000000 -0400
> @@ -154,6 +154,7 @@
> #include <linux/seq_file.h>
> #include <linux/device.h>
> #include <linux/bitops.h>
> +#include <linux/digits.h>
>
> #include <asm/byteorder.h>
> #include <asm/irq.h>
> @@ -1442,8 +1443,6 @@
> */
> 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++ == '=') {
> diff -urN linux-2.6.clean/drivers/isdn/icn/icn.c linux-2.6.patched/drivers/isdn/icn/icn.c
> --- linux-2.6.clean/drivers/isdn/icn/icn.c 2005-10-05 12:10:40.000000000 -0400
> +++ linux-2.6.patched/drivers/isdn/icn/icn.c 2005-10-05 12:36:51.000000000 -0400
> @@ -12,6 +12,7 @@
> #include "icn.h"
> #include <linux/module.h>
> #include <linux/init.h>
> +#include <linux/digits.h>
>
> static int portbase = ICN_BASEADDR;
> static unsigned long membase = ICN_MEMADDR;
> @@ -1385,7 +1386,7 @@
> c->parm.num[0] ? "N" : "ALL", c->parm.num);
> } else
> sprintf(cbuf, "%02d;EAZ%s\n", (int) a,
> - c->parm.num[0] ? (char *)(c->parm.num) : "0123456789");
> + c->parm.num[0] ? (char *)(c->parm.num) : decimal);
> i = icn_writecmd(cbuf, strlen(cbuf), 0, card);
> }
> break;
> diff -urN linux-2.6.clean/drivers/isdn/isdnloop/isdnloop.c linux-2.6.patched/drivers/isdn/isdnloop/isdnloop.c
> --- linux-2.6.clean/drivers/isdn/isdnloop/isdnloop.c 2005-10-05 12:10:40.000000000 -0400
> +++ linux-2.6.patched/drivers/isdn/isdnloop/isdnloop.c 2005-10-05 12:36:51.000000000 -0400
> @@ -14,6 +14,7 @@
> #include <linux/interrupt.h>
> #include <linux/init.h>
> #include <linux/sched.h>
> +#include <linux/digits.h>
> #include "isdnloop.h"
>
> static char *revision = "$Revision: 1.11.6.7 $";
> @@ -1297,7 +1298,7 @@
> 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;
> diff -urN linux-2.6.clean/drivers/net/irda/ma600.c linux-2.6.patched/drivers/net/irda/ma600.c
> --- linux-2.6.clean/drivers/net/irda/ma600.c 2005-10-05 12:10:41.000000000 -0400
> +++ linux-2.6.patched/drivers/net/irda/ma600.c 2005-10-05 12:36:52.000000000 -0400
> @@ -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 @@
> /* 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]);
> + HEX[(byte>>4)&0x0f], HEX[byte&0x0f]);
> printk(KERN_WARNING "byte echo = 0x%c%c\n",
> - hexTbl[(byte_echo>>4) & 0x0f],
> - hexTbl[byte_echo & 0x0f]);
> + HEX[(byte_echo>>4) & 0x0f],
> + HEX[byte_echo & 0x0f]);
> #ifndef NDEBUG
> } else {
> IRDA_DEBUG(2, "%s() control byte write read OK\n", __FUNCTION__);
> diff -urN linux-2.6.clean/drivers/net/ppp_synctty.c linux-2.6.patched/drivers/net/ppp_synctty.c
> --- linux-2.6.clean/drivers/net/ppp_synctty.c 2005-10-05 12:10:42.000000000 -0400
> +++ linux-2.6.patched/drivers/net/ppp_synctty.c 2005-10-05 12:36:52.000000000 -0400
> @@ -43,6 +43,7 @@
> #include <linux/ppp_channel.h>
> #include <linux/spinlock.h>
> #include <linux/init.h>
> +#include <linux/digits.h>
> #include <asm/uaccess.h>
> #include <asm/semaphore.h>
>
> @@ -108,7 +109,6 @@
> ppp_print_hex (register __u8 * out, const __u8 * in, int count)
> {
> register __u8 next_ch;
> - static char hex[] = "0123456789ABCDEF";
>
> while (count-- > 0) {
> next_ch = *in++;
> diff -urN linux-2.6.clean/drivers/net/sk98lin/skge.c linux-2.6.patched/drivers/net/sk98lin/skge.c
> --- linux-2.6.clean/drivers/net/sk98lin/skge.c 2005-10-05 12:10:42.000000000 -0400
> +++ linux-2.6.patched/drivers/net/sk98lin/skge.c 2005-10-05 12:36:52.000000000 -0400
> @@ -113,6 +113,7 @@
> #include <linux/init.h>
> #include <linux/proc_fs.h>
> #include <linux/dma-mapping.h>
> +#include <linux/digits.h>
>
> #include "h/skdrv1st.h"
> #include "h/skdrv2nd.h"
> @@ -4810,7 +4811,6 @@
> int haddr, addr;
> char hex_buffer[180];
> char asc_buffer[180];
> -char HEXCHAR[] = "0123456789ABCDEF";
>
> addr = 0;
> haddr = 0;
> @@ -4823,9 +4823,9 @@
> asc_buffer[addr] = '.';
> addr++;
> asc_buffer[addr] = 0;
> - hex_buffer[haddr] = HEXCHAR[(*p & 0xf0) >> 4];
> + hex_buffer[haddr] = HEX[(*p & 0xf0) >> 4];
> haddr++;
> - hex_buffer[haddr] = HEXCHAR[*p & 0x0f];
> + hex_buffer[haddr] = HEX[*p & 0x0f];
> haddr++;
> hex_buffer[haddr] = ' ';
> haddr++;
> @@ -4858,7 +4858,7 @@
> int haddr, addr;
> char hex_buffer[180];
> char asc_buffer[180];
> -char HEXCHAR[] = "0123456789ABCDEF";
> +char HEX[] = "0123456789ABCDEF";
> long *p;
> int l;
>
> @@ -4869,21 +4869,21 @@
> p = (long*) pc;
> for (i=0; i < size; ) {
> l = (long) *p;
> - hex_buffer[haddr] = HEXCHAR[(l >> 28) & 0xf];
> + hex_buffer[haddr] = HEX[(l >> 28) & 0xf];
> haddr++;
> - hex_buffer[haddr] = HEXCHAR[(l >> 24) & 0xf];
> + hex_buffer[haddr] = HEX[(l >> 24) & 0xf];
> haddr++;
> - hex_buffer[haddr] = HEXCHAR[(l >> 20) & 0xf];
> + hex_buffer[haddr] = HEX[(l >> 20) & 0xf];
> haddr++;
> - hex_buffer[haddr] = HEXCHAR[(l >> 16) & 0xf];
> + hex_buffer[haddr] = HEX[(l >> 16) & 0xf];
> haddr++;
> - hex_buffer[haddr] = HEXCHAR[(l >> 12) & 0xf];
> + hex_buffer[haddr] = HEX[(l >> 12) & 0xf];
> haddr++;
> - hex_buffer[haddr] = HEXCHAR[(l >> 8) & 0xf];
> + hex_buffer[haddr] = HEX[(l >> 8) & 0xf];
> haddr++;
> - hex_buffer[haddr] = HEXCHAR[(l >> 4) & 0xf];
> + hex_buffer[haddr] = HEX[(l >> 4) & 0xf];
> haddr++;
> - hex_buffer[haddr] = HEXCHAR[l & 0x0f];
> + hex_buffer[haddr] = HEX[l & 0x0f];
> haddr++;
> hex_buffer[haddr] = ' ';
> haddr++;
> diff -urN linux-2.6.clean/drivers/net/skfp/smt.c linux-2.6.patched/drivers/net/skfp/smt.c
> --- linux-2.6.clean/drivers/net/skfp/smt.c 2005-10-05 12:10:42.000000000 -0400
> +++ linux-2.6.patched/drivers/net/skfp/smt.c 2005-10-05 12:36:52.000000000 -0400
> @@ -1731,7 +1731,8 @@
> #endif
>
> #ifdef DEBUG
> -#define hextoasc(x) "0123456789abcdef"[x]
> +#include <linux/digits.h>
> +#define hextoasc(x) hex[x]
>
> char *addr_to_string(struct fddi_addr *addr)
> {
> diff -urN linux-2.6.clean/drivers/net/wireless/strip.c linux-2.6.patched/drivers/net/wireless/strip.c
> --- linux-2.6.clean/drivers/net/wireless/strip.c 2005-10-05 12:10:43.000000000 -0400
> +++ linux-2.6.patched/drivers/net/wireless/strip.c 2005-10-05 12:36:53.000000000 -0400
> @@ -107,6 +107,7 @@
> #include <linux/serial.h>
> #include <linux/serialP.h>
> #include <linux/rcupdate.h>
> +#include <linux/digits.h>
> #include <net/arp.h>
>
> #include <linux/ip.h>
> @@ -404,8 +405,6 @@
> (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} };
> @@ -1292,13 +1291,13 @@
> __u8 *p = buffer;
> while (p < end)
> sum += *p++;
> - end[3] = hextable[sum & 0xF];
> + end[3] = HEX[sum & 0xF];
> sum >>= 4;
> - end[2] = hextable[sum & 0xF];
> + end[2] = HEX[sum & 0xF];
> sum >>= 4;
> - end[1] = hextable[sum & 0xF];
> + end[1] = HEX[sum & 0xF];
> sum >>= 4;
> - end[0] = hextable[sum & 0xF];
> + end[0] = HEX[sum & 0xF];
> return (end + 4);
> }
>
> @@ -1379,15 +1378,15 @@
>
> *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++ = HEX[haddr.c[2] >> 4];
> + *ptr++ = HEX[haddr.c[2] & 0xF];
> + *ptr++ = HEX[haddr.c[3] >> 4];
> + *ptr++ = HEX[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++ = HEX[haddr.c[4] >> 4];
> + *ptr++ = HEX[haddr.c[4] & 0xF];
> + *ptr++ = HEX[haddr.c[5] >> 4];
> + *ptr++ = HEX[haddr.c[5] & 0xF];
> *ptr++ = '*';
> *ptr++ = key.c[0];
> *ptr++ = key.c[1];
> diff -urN linux-2.6.clean/drivers/pnp/pnpbios/rsparser.c linux-2.6.patched/drivers/pnp/pnpbios/rsparser.c
> --- linux-2.6.clean/drivers/pnp/pnpbios/rsparser.c 2005-10-05 12:10:44.000000000 -0400
> +++ linux-2.6.patched/drivers/pnp/pnpbios/rsparser.c 2005-10-05 12:36:53.000000000 -0400
> @@ -7,6 +7,7 @@
> #include <linux/ctype.h>
> #include <linux/pnp.h>
> #include <linux/pnpbios.h>
> +#include <linux/digits.h>
>
> #ifdef CONFIG_PCI
> #include <linux/pci.h>
> @@ -481,8 +482,6 @@
>
> 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);
> diff -urN linux-2.6.clean/drivers/scsi/ibmmca.c linux-2.6.patched/drivers/scsi/ibmmca.c
> --- linux-2.6.clean/drivers/scsi/ibmmca.c 2005-10-05 12:10:45.000000000 -0400
> +++ linux-2.6.patched/drivers/scsi/ibmmca.c 2005-10-05 12:36:53.000000000 -0400
> @@ -39,6 +39,7 @@
> #include <linux/spinlock.h>
> #include <linux/init.h>
> #include <linux/mca-legacy.h>
> +#include <linux/digits.h>
>
> #include <asm/system.h>
> #include <asm/io.h>
> @@ -1007,7 +1008,6 @@
> /* 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);
> diff -urN linux-2.6.clean/drivers/scsi/ultrastor.c linux-2.6.patched/drivers/scsi/ultrastor.c
> --- linux-2.6.clean/drivers/scsi/ultrastor.c 2005-10-05 12:10:46.000000000 -0400
> +++ linux-2.6.patched/drivers/scsi/ultrastor.c 2005-10-05 12:36:54.000000000 -0400
> @@ -138,6 +138,7 @@
> #include <linux/spinlock.h>
> #include <linux/stat.h>
> #include <linux/bitops.h>
> +#include <linux/digits.h>
>
> #include <asm/io.h>
> #include <asm/system.h>
> @@ -869,8 +870,8 @@
> 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] = hex[p >> 4];
> + out[29 + i * 3] = hex[p & 15];
> out[30 + i * 3] = ' ';
> }
> out[28 + i * 3] = '\n';
> diff -urN linux-2.6.clean/drivers/serial/sh-sci.c linux-2.6.patched/drivers/serial/sh-sci.c
> --- linux-2.6.clean/drivers/serial/sh-sci.c 2005-10-05 12:10:46.000000000 -0400
> +++ linux-2.6.patched/drivers/serial/sh-sci.c 2005-10-05 12:36:54.000000000 -0400
> @@ -42,6 +42,7 @@
> #include <linux/delay.h>
> #include <linux/console.h>
> #include <linux/bitops.h>
> +#include <linux/digits.h>
>
> #ifdef CONFIG_CPU_FREQ
> #include <linux/notifier.h>
> @@ -119,16 +120,14 @@
> }
>
> /* 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 hex[(x >> 4) & 0xf];
> }
>
> static __inline__ char lowhex(int x)
> {
> - return hexchars[x & 0xf];
> + return hex[x & 0xf];
> }
>
> #endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */
> diff -urN linux-2.6.clean/fs/udf/unicode.c linux-2.6.patched/fs/udf/unicode.c
> --- linux-2.6.clean/fs/udf/unicode.c 2005-10-05 12:10:49.000000000 -0400
> +++ linux-2.6.patched/fs/udf/unicode.c 2005-10-05 12:36:55.000000000 -0400
> @@ -29,6 +29,7 @@
> #include <linux/string.h> /* for memset */
> #include <linux/nls.h>
> #include <linux/udf_fs.h>
> +#include <linux/digits.h>
>
> #include "udf_sb.h"
>
> @@ -427,7 +428,6 @@
> 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 +500,10 @@
> 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++] = HEX[(valueCRC & 0xf000) >> 12];
> + newName[newIndex++] = HEX[(valueCRC & 0x0f00) >> 8];
> + newName[newIndex++] = HEX[(valueCRC & 0x00f0) >> 4];
> + newName[newIndex++] = HEX[(valueCRC & 0x000f)];
>
> if (hasExt)
> {
> diff -urN linux-2.6.clean/include/linux/digits.h linux-2.6.patched/include/linux/digits.h
> --- linux-2.6.clean/include/linux/digits.h 1969-12-31 19:00:00.000000000 -0500
> +++ linux-2.6.patched/include/linux/digits.h 2005-10-05 12:44:46.000000000 -0400
> @@ -0,0 +1,15 @@
> +/* include/linux/digits.h
> + *
> + * Contains extern definitions for ascii representation of hex or decimal
> + * variables.
> + *
> + * Oct. 4, 2005 Masoud Sharbiani <masouds@masoud.ir>
> + * This source code is licensed under the GNU General Public License,
> + * Version 2. See the file COPYING for more details.
> + *
> + */
> +
> +extern unsigned char *hex;
> +extern unsigned char *HEX;
> +extern unsigned char *decimal;
> +
> diff -urN linux-2.6.clean/kernel/audit.c linux-2.6.patched/kernel/audit.c
> --- linux-2.6.clean/kernel/audit.c 2005-10-05 12:10:54.000000000 -0400
> +++ linux-2.6.patched/kernel/audit.c 2005-10-05 12:36:59.000000000 -0400
> @@ -54,6 +54,7 @@
> #include <net/sock.h>
> #include <linux/skbuff.h>
> #include <linux/netlink.h>
> +#include <linux/digits.h>
>
> /* No auditing will take place until audit_initialized != 0.
> * (Initialization happens after skb_init is called.) */
> @@ -787,7 +788,6 @@
> 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 +803,8 @@
>
> 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++ = HEX[(buf[i] & 0xF0)>>4]; /* Upper nibble */
> + *ptr++ = HEX[buf[i] & 0x0F]; /* Lower nibble */
> }
> *ptr = 0;
> skb_put(skb, len << 1); /* new string is twice the old string */
> diff -urN linux-2.6.clean/lib/digits.c linux-2.6.patched/lib/digits.c
> --- linux-2.6.clean/lib/digits.c 1969-12-31 19:00:00.000000000 -0500
> +++ linux-2.6.patched/lib/digits.c 2005-10-05 12:36:59.000000000 -0400
> @@ -0,0 +1,20 @@
> +/*
> + * linux/lib/digits.c
> + * Contains string definitions of hex and decimal digits. Created to consolidate
> + * all of the instances from all over the place.
> + *
> + * Oct. 4, 2005 Masoud Sharbiani <masouds@masoud.ir>
> + * This source code is licensed under the GNU General Public License,
> + * Version 2. See the file COPYING for more details.
> + *
> + */
> +
> +#include <linux/module.h>
> +
> +const unsigned char hex[] = "0123456789abcdef";
> +const unsigned char decimal[] = "0123456789";
> +const unsigned char HEX[] = "0123456789ABCDEF";
> +
> +EXPORT_SYMBOL(hex);
> +EXPORT_SYMBOL(decimal);
> +EXPORT_SYMBOL(HEX);
> diff -urN linux-2.6.clean/lib/Makefile linux-2.6.patched/lib/Makefile
> --- linux-2.6.clean/lib/Makefile 2005-10-05 12:10:54.000000000 -0400
> +++ linux-2.6.patched/lib/Makefile 2005-10-05 12:36:59.000000000 -0400
> @@ -9,7 +9,7 @@
>
> lib-y += kobject.o kref.o kobject_uevent.o klist.o
>
> -obj-y += sort.o parser.o halfmd4.o
> +obj-y += sort.o parser.o halfmd4.o digits.o
>
> ifeq ($(CONFIG_DEBUG_KOBJECT),y)
> CFLAGS_kobject.o += -DDEBUG
> diff -urN linux-2.6.clean/net/ipv4/arp.c linux-2.6.patched/net/ipv4/arp.c
> --- linux-2.6.clean/net/ipv4/arp.c 2005-10-05 12:10:54.000000000 -0400
> +++ linux-2.6.patched/net/ipv4/arp.c 2005-10-05 12:36:59.000000000 -0400
> @@ -102,6 +102,7 @@
> #ifdef CONFIG_SYSCTL
> #include <linux/sysctl.h>
> #endif
> +#include <linux/digits.h>
>
> #include <net/ip.h>
> #include <net/icmp.h>
> @@ -1291,7 +1292,6 @@
> struct neighbour *n)
> {
> char hbuffer[HBUFFERLEN];
> - const char hexbuf[] = "0123456789ABCDEF";
> int k, j;
> char tbuf[16];
> struct net_device *dev = n->dev;
> @@ -1305,8 +1305,8 @@
> 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++] = HEX[(n->ha[j] >> 4) & 15];
> + hbuffer[k++] = HEX[n->ha[j] & 15];
> hbuffer[k++] = ':';
> }
> hbuffer[--k] = 0;
> diff -urN linux-2.6.clean/net/ipv4/netfilter/ipt_CLUSTERIP.c linux-2.6.patched/net/ipv4/netfilter/ipt_CLUSTERIP.c
> --- linux-2.6.clean/net/ipv4/netfilter/ipt_CLUSTERIP.c 2005-10-05 12:10:55.000000000 -0400
> +++ linux-2.6.patched/net/ipv4/netfilter/ipt_CLUSTERIP.c 2005-10-05 12:36:59.000000000 -0400
> @@ -22,6 +22,7 @@
> #include <linux/if_arp.h>
> #include <linux/proc_fs.h>
> #include <linux/seq_file.h>
> +#include <linux/digits.h>
>
> #include <net/checksum.h>
>
> @@ -502,11 +503,10 @@
> #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++]=hex[(payload->src_hw[j]>>4)&15];
> + hbuffer[k++]=hex[payload->src_hw[j]&15];
> hbuffer[k++]=':';
> }
> hbuffer[--k]='\0';
> _______________________________________________
> Kernel-janitors mailing list
> Kernel-janitors@lists.osdl.org
> https://lists.osdl.org/mailman/listinfo/kernel-janitors
[-- Attachment #2: Type: text/plain, Size: 168 bytes --]
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/kernel-janitors
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-10-05 17:25 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-05 17:01 [KJ] hexdigits definition consolidation Masoud Sharbiani
2005-10-05 17:25 ` Matthew Wilcox
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.