diff options
author | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-09-27 14:28:26 +0100 |
---|---|---|
committer | kfraser@localhost.localdomain <kfraser@localhost.localdomain> | 2006-09-27 14:28:26 +0100 |
commit | 7031746224c2c274548596b5ee1e856360d860c5 (patch) | |
tree | 7da21669bb7b34b55b4705735febf9b73fa04ab0 /xen/include/asm-x86/debugger.h | |
parent | a301105b5b9177c9750ded2cba138f9be695fb4a (diff) | |
download | xen-7031746224c2c274548596b5ee1e856360d860c5.tar.gz xen-7031746224c2c274548596b5ee1e856360d860c5.tar.bz2 xen-7031746224c2c274548596b5ee1e856360d860c5.zip |
[XEN] gdbstub return value is used to determine whether or not
to continue execution.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'xen/include/asm-x86/debugger.h')
-rw-r--r-- | xen/include/asm-x86/debugger.h | 43 |
1 files changed, 7 insertions, 36 deletions
diff --git a/xen/include/asm-x86/debugger.h b/xen/include/asm-x86/debugger.h index 3e5debebd8..743dc2d8e5 100644 --- a/xen/include/asm-x86/debugger.h +++ b/xen/include/asm-x86/debugger.h @@ -15,14 +15,13 @@ * 2. debugger_trap_fatal(): * Called when Xen is about to give up and crash. Typically you will use this * hook to drop into a debug session. It can also be used to hook off - * deliberately caused traps (which you then handle and return non-zero) - * but really these should be hooked off 'debugger_trap_entry'. + * deliberately caused traps (which you then handle and return non-zero). * * 3. debugger_trap_immediate(): * Called if we want to drop into a debugger now. This is essentially the * same as debugger_trap_fatal, except that we use the current register state * rather than the state which was in effect when we took the trap. - * Essentially, if we're dying because of an unhandled exception, we call + * For example: if we're dying because of an unhandled exception, we call * debugger_trap_fatal; if we're dying because of a panic() we call * debugger_trap_immediate(). */ @@ -44,42 +43,19 @@ #include <xen/gdbstub.h> -#define __debugger_trap_entry(_v, _r) (0) - -static inline int __debugger_trap_fatal( +static inline int debugger_trap_fatal( unsigned int vector, struct cpu_user_regs *regs) { - (void)__trap_to_gdb(regs, vector); - return (vector == TRAP_int3); /* int3 is harmless */ + return (__trap_to_gdb(regs, vector) == 0); } /* Int3 is a trivial way to gather cpu_user_regs context. */ #define debugger_trap_immediate() __asm__ __volatile__ ( "int3" ); -#elif 0 - -extern int kdb_trap(int, int, struct cpu_user_regs *); - -static inline int __debugger_trap_entry( - unsigned int vector, struct cpu_user_regs *regs) -{ - return 0; -} - -static inline int __debugger_trap_fatal( - unsigned int vector, struct cpu_user_regs *regs) -{ - return kdb_trap(vector, 0, regs); -} - -/* Int3 is a trivial way to gather cpu_user_regs context. */ -#define debugger_trap_immediate() __asm__ __volatile__ ( "int3" ) - #else -#define __debugger_trap_entry(_v, _r) (0) -#define __debugger_trap_fatal(_v, _r) (0) -#define __debugger_trap_immediate() ((void)0) +#define debugger_trap_fatal(v, r) (0) +#define debugger_trap_immediate() ((void)0) #endif @@ -96,12 +72,7 @@ static inline int debugger_trap_entry( return 1; } - return __debugger_trap_entry(vector, regs); + return 0; } -#define debugger_trap_fatal(v, r) (__debugger_trap_fatal(v, r)) -#ifndef debugger_trap_immediate -#define debugger_trap_immediate() (__debugger_trap_immediate()) -#endif - #endif /* __X86_DEBUGGER_H__ */ |