Messages in this thread Patch in this message | | | Subject | [PATCH 4/9] kgdb: use the common ascii hex helpers | From | Harvey Harrison <> | Date | Thu, 01 May 2008 16:05:36 -0700 |
| |
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> --- drivers/misc/kgdbts.c | 5 ++--- kernel/kgdb.c | 36 +++++++++++------------------------- 2 files changed, 13 insertions(+), 28 deletions(-)
diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c index 30a1af8..03d3549 100644 --- a/drivers/misc/kgdbts.c +++ b/drivers/misc/kgdbts.c @@ -118,7 +118,6 @@ } while (0) #define MAX_CONFIG_LEN 40 -static const char hexchars[] = "0123456789abcdef"; static struct kgdb_io kgdbts_io_ops; static char get_buf[BUFMAX]; static int get_buf_cnt; @@ -618,8 +617,8 @@ static void fill_get_buf(char *buf) count++; } strcat(get_buf, "#"); - get_buf[count + 2] = hexchars[checksum >> 4]; - get_buf[count + 3] = hexchars[checksum & 0xf]; + get_buf[count + 2] = hex_asc_hi(checksum); + get_buf[count + 3] = hex_asc_lo(checksum); get_buf[count + 4] = '\0'; v2printk("get%i: %s\n", ts.idx, get_buf); } diff --git a/kernel/kgdb.c b/kernel/kgdb.c index 1bd0ec1..216c3dc 100644 --- a/kernel/kgdb.c +++ b/kernel/kgdb.c @@ -226,20 +226,6 @@ void __weak kgdb_disable_hw_debug(struct pt_regs *regs) /* * GDB remote protocol parser: */ - -static const char hexchars[] = "0123456789abcdef"; - -static int hex(char ch) -{ - if ((ch >= 'a') && (ch <= 'f')) - return ch - 'a' + 10; - if ((ch >= '0') && (ch <= '9')) - return ch - '0'; - if ((ch >= 'A') && (ch <= 'F')) - return ch - 'A' + 10; - return -1; -} - /* scan for the sequence $<data>#<checksum> */ static void get_packet(char *buffer) { @@ -276,8 +262,8 @@ static void get_packet(char *buffer) buffer[count] = 0; if (ch == '#') { - xmitcsum = hex(kgdb_io_ops->read_char()) << 4; - xmitcsum += hex(kgdb_io_ops->read_char()); + xmitcsum = hex_to_int(kgdb_io_ops->read_char()) << 4; + xmitcsum += hex_to_int(kgdb_io_ops->read_char()); if (checksum != xmitcsum) /* failed checksum */ @@ -316,8 +302,8 @@ static void put_packet(char *buffer) } kgdb_io_ops->write_char('#'); - kgdb_io_ops->write_char(hexchars[checksum >> 4]); - kgdb_io_ops->write_char(hexchars[checksum & 0xf]); + kgdb_io_ops->write_char(hex_asc_hi(checksum)); + kgdb_io_ops->write_char(hex_asc_lo(checksum)); if (kgdb_io_ops->flush) kgdb_io_ops->flush(); @@ -348,8 +334,8 @@ static void put_packet(char *buffer) static char *pack_hex_byte(char *pkt, u8 byte) { - *pkt++ = hexchars[byte >> 4]; - *pkt++ = hexchars[byte & 0xf]; + *pkt++ = hex_asc_hi(byte); + *pkt++ = hex_asc_lo(byte); return pkt; } @@ -427,8 +413,8 @@ int kgdb_hex2mem(char *buf, char *mem, int count) tmp_hex = tmp_raw - 1; while (tmp_hex >= buf) { tmp_raw--; - *tmp_raw = hex(*tmp_hex--); - *tmp_raw |= hex(*tmp_hex--) << 4; + *tmp_raw = hex_to_int(*tmp_hex--); + *tmp_raw |= hex_to_int(*tmp_hex--) << 4; } return probe_kernel_write(mem, tmp_raw, count); @@ -446,7 +432,7 @@ int kgdb_hex2long(char **ptr, long *long_val) *long_val = 0; while (**ptr) { - hex_val = hex(**ptr); + hex_val = hex_to_int(**ptr); if (hex_val < 0) break; @@ -486,8 +472,8 @@ static void error_packet(char *pkt, int error) { error = -error; pkt[0] = 'E'; - pkt[1] = hexchars[(error / 10)]; - pkt[2] = hexchars[(error % 10)]; + pkt[1] = hex_asc[(error / 10)]; + pkt[2] = hex_asc[(error % 10)]; pkt[3] = '\0'; } -- 1.5.5.1.305.g7c84
| |