#ifndef __KGDB_H__ #define __KGDB_H__ #include <asm/ptrace.h> #define KGDBERR_BADPARAMS 1 #define KGDBERR_NOTHEXDIG 2 #define KGDBERR_MEMFAULT 3 #define KGDBERR_NOSPACE 4 #define KGDBERR_ALIGNFAULT 5 #define KGDBDATA_MAXREGS 8 #define KGDBDATA_MAXPRIV 8 #define KGDBEXIT_TYPEMASK 0xff #define KGDBEXIT_KILL 0 #define KGDBEXIT_CONTINUE 1 #define KGDBEXIT_SINGLE 2 #define KGDBEXIT_WITHADDR 0x100 typedef struct { int num; unsigned long val; } kgdb_reg; typedef struct { int sigval; int extype; unsigned long exaddr; int nregs; kgdb_reg regs[KGDBDATA_MAXREGS]; unsigned long private[KGDBDATA_MAXPRIV]; } kgdb_data; /* these functions are provided by the generic kgdb support */ extern void kgdb_init(void); extern void kgdb_error(int); extern int kgdb_output_string(const char *, unsigned int); extern void breakpoint(void); /* these functions are provided by the platform specific kgdb support */ extern void kgdb_flush_cache_range(void *, void *); extern void kgdb_flush_cache_all(void); extern int kgdb_setjmp(long *); extern void kgdb_longjmp(long *, int); extern void kgdb_enter(struct pt_regs *, kgdb_data *); extern void kgdb_exit(struct pt_regs *, kgdb_data *); extern int kgdb_getregs(struct pt_regs *, char *, int); extern void kgdb_putreg(struct pt_regs *, int, char *, int); extern void kgdb_putregs(struct pt_regs *, char *, int); extern int kgdb_trap(struct pt_regs *); extern void kgdb_breakpoint(int argc, char * const argv[]); /* these functions are provided by the platform serial driver */ extern void kgdb_serial_init(void); extern int getDebugChar(void); extern void putDebugChar(int); extern void putDebugStr(const char *); extern void kgdb_interruptible(int); /* this is referenced in the trap handler for the platform */ extern int (*debugger_exception_handler)(struct pt_regs *); #endif /* __KGDB_H__ */