summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@phys.ethz.ch>2009-12-19 20:23:04 +0100
committerroot <root@phys.ethz.ch>2009-12-19 20:25:15 +0100
commit4ba400c77201a8f9efe595792bfdf264741a85a9 (patch)
treeb9004e491e55af0c366f659bde25a6799d9bb5b2
parent155d3ff9361676190ff4483b37a2f7048625cd1e (diff)
Fix debugger trigger
* i386/i386/locore.S [MACH_XEN] (RET_OFFSET): Define to 8 * xen/console.c (hypcnintr): On pound sign, call kdb_kintr instead of panicing.
-rw-r--r--i386/i386/locore.S4
-rw-r--r--xen/console.c7
2 files changed, 9 insertions, 2 deletions
diff --git a/i386/i386/locore.S b/i386/i386/locore.S
index 663db43..e8f7740 100644
--- a/i386/i386/locore.S
+++ b/i386/i386/locore.S
@@ -798,7 +798,11 @@ ast_from_interrupt:
* Call kdb, passing it that register save area.
*/
+#ifdef MACH_XEN
+#define RET_OFFSET 8
+#else /* MACH_XEN */
#define RET_OFFSET 16
+#endif /* MACH_XEN */
ENTRY(kdb_kintr)
movl %ebp,%eax /* save caller`s frame pointer */
diff --git a/xen/console.c b/xen/console.c
index c65e6d2..a289b8e 100644
--- a/xen/console.c
+++ b/xen/console.c
@@ -112,8 +112,11 @@ static void hypcnintr(int unit, spl_t spl, void *ret_addr, void *regs) {
mb();
console->in_cons++;
#ifdef MACH_KDB
- if (c == (char)'£')
- panic("£ pressed");
+ if (c == (char)'£') {
+ printf("£ pressed\n");
+ kdb_kintr();
+ continue;
+ }
#endif /* MACH_KDB */
if ((tp->t_state & (TS_ISOPEN|TS_WOPEN)))
(*linesw[tp->t_line].l_rint)(c, tp);