diff options
Diffstat (limited to 'include/kgdb.h')
| -rw-r--r-- | include/kgdb.h | 70 | 
1 files changed, 70 insertions, 0 deletions
| diff --git a/include/kgdb.h b/include/kgdb.h new file mode 100644 index 000000000..f543cd6e1 --- /dev/null +++ b/include/kgdb.h @@ -0,0 +1,70 @@ +#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 *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__ */ |