1 #ifndef __KGDB_H__ 2 #define __KGDB_H__ 3 4 #include <asm/ptrace.h> 5 6 #define KGDBERR_BADPARAMS 1 7 #define KGDBERR_NOTHEXDIG 2 8 #define KGDBERR_MEMFAULT 3 9 #define KGDBERR_NOSPACE 4 10 #define KGDBERR_ALIGNFAULT 5 11 12 #define KGDBDATA_MAXREGS 8 13 #define KGDBDATA_MAXPRIV 8 14 15 #define KGDBEXIT_TYPEMASK 0xff 16 17 #define KGDBEXIT_KILL 0 18 #define KGDBEXIT_CONTINUE 1 19 #define KGDBEXIT_SINGLE 2 20 21 #define KGDBEXIT_WITHADDR 0x100 22 23 typedef 24 struct { 25 int num; 26 unsigned long val; 27 } 28 kgdb_reg; 29 30 typedef 31 struct { 32 int sigval; 33 int extype; 34 unsigned long exaddr; 35 int nregs; 36 kgdb_reg regs[KGDBDATA_MAXREGS]; 37 unsigned long private[KGDBDATA_MAXPRIV]; 38 } 39 kgdb_data; 40 41 /* these functions are provided by the generic kgdb support */ 42 extern void kgdb_init(void); 43 extern void kgdb_error(int); 44 extern int kgdb_output_string(const char *, unsigned int); 45 extern void breakpoint(void); 46 47 /* these functions are provided by the platform specific kgdb support */ 48 extern void kgdb_flush_cache_range(void *, void *); 49 extern void kgdb_flush_cache_all(void); 50 extern int kgdb_setjmp(long *); 51 extern void kgdb_longjmp(long *, int); 52 extern void kgdb_enter(struct pt_regs *, kgdb_data *); 53 extern void kgdb_exit(struct pt_regs *, kgdb_data *); 54 extern int kgdb_getregs(struct pt_regs *, char *, int); 55 extern void kgdb_putreg(struct pt_regs *, int, char *, int); 56 extern void kgdb_putregs(struct pt_regs *, char *, int); 57 extern int kgdb_trap(struct pt_regs *); 58 void kgdb_breakpoint(int argc, char *const argv[]); 59 60 /* these functions are provided by the platform serial driver */ 61 extern void kgdb_serial_init(void); 62 extern int getDebugChar(void); 63 extern void putDebugChar(int); 64 extern void putDebugStr(const char *); 65 extern void kgdb_interruptible(int); 66 67 /* this is referenced in the trap handler for the platform */ 68 extern int (*debugger_exception_handler)(struct pt_regs *); 69 70 #endif /* __KGDB_H__ */ 71