]> err.no Git - linux-2.6/blobdiff - arch/sh/kernel/kgdb_stub.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes
[linux-2.6] / arch / sh / kernel / kgdb_stub.c
index 2fdc700dfd6e72be2bed5e8c4db4489967781d6c..bf8ac4c716402c2b37178a8df448d318dd60af1c 100644 (file)
 #include <linux/init.h>
 #include <linux/console.h>
 #include <linux/sysrq.h>
+#include <linux/module.h>
 #include <asm/system.h>
 #include <asm/cacheflush.h>
 #include <asm/current.h>
@@ -116,7 +117,9 @@ kgdb_debug_hook_t *kgdb_debug_hook;
 kgdb_bus_error_hook_t *kgdb_bus_err_hook;
 
 int (*kgdb_getchar)(void);
+EXPORT_SYMBOL_GPL(kgdb_getchar);
 void (*kgdb_putchar)(int);
+EXPORT_SYMBOL_GPL(kgdb_putchar);
 
 static void put_debug_char(int c)
 {
@@ -136,7 +139,7 @@ static int get_debug_char(void)
 #define NUMREGBYTES (MAXREG*4)
 #define OUTBUFMAX (NUMREGBYTES*2+512)
 
-enum regs {
+enum {
        R0 = 0, R1,  R2,  R3,   R4,   R5,  R6, R7,
        R8, R9, R10, R11, R12,  R13,  R14, R15,
        PC, PR, GBR, VBR, MACH, MACL, SR,
@@ -176,9 +179,13 @@ int kgdb_nofault;          /* Boolean to ignore bus errs (i.e. in GDB) */
 
 /* SCI/UART settings, used in kgdb_console_setup() */
 int  kgdb_portnum = CONFIG_KGDB_DEFPORT;
+EXPORT_SYMBOL_GPL(kgdb_portnum);
 int  kgdb_baud = CONFIG_KGDB_DEFBAUD;
+EXPORT_SYMBOL_GPL(kgdb_baud);
 char kgdb_parity = CONFIG_KGDB_DEFPARITY;
+EXPORT_SYMBOL_GPL(kgdb_parity);
 char kgdb_bits = CONFIG_KGDB_DEFBITS;
+EXPORT_SYMBOL_GPL(kgdb_bits);
 
 /* Jump buffer for setjmp/longjmp */
 static jmp_buf rem_com_env;
@@ -267,8 +274,7 @@ static char *mem_to_hex(const char *mem, char *buf, const int count)
        }
        for (i = 0; i < count; i++) {
                ch = *mem++;
-               *buf++ = highhex(ch);
-               *buf++ = lowhex(ch);
+               buf = pack_hex_byte(buf, ch);
        }
        *buf = 0;
        return (buf);
@@ -323,14 +329,6 @@ static char *ebin_to_mem(const char *buf, char *mem, int count)
        return mem;
 }
 
-/* Pack a hex byte */
-static char *pack_hex_byte(char *pkt, int byte)
-{
-       *pkt++ = hexchars[(byte >> 4) & 0xf];
-       *pkt++ = hexchars[(byte & 0xf)];
-       return pkt;
-}
-
 /* Scan for the start char '$', read the packet and check the checksum */
 static void get_packet(char *buffer, int buflen)
 {
@@ -428,8 +426,8 @@ static void put_packet(char *buffer)
 
                /* '#' Separator, put high and low components of checksum */
                put_debug_char('#');
-               put_debug_char(highhex(checksum));
-               put_debug_char(lowhex(checksum));
+               put_debug_char(hex_asc_hi(checksum));
+               put_debug_char(hex_asc_lo(checksum));
        }
        while ((get_debug_char()) != '+');      /* While no ack */
 }
@@ -651,8 +649,8 @@ static void undo_single_step(void)
 static void send_signal_msg(const int signum)
 {
        out_buffer[0] = 'S';
-       out_buffer[1] = highhex(signum);
-       out_buffer[2] = lowhex(signum);
+       out_buffer[1] = hex_asc_hi(signum);
+       out_buffer[2] = hex_asc_lo(signum);
        out_buffer[3] = 0;
        put_packet(out_buffer);
 }