diff options
| author | Peter Wemm <peter@FreeBSD.org> | 2008-05-04 23:29:38 +0000 |
|---|---|---|
| committer | Peter Wemm <peter@FreeBSD.org> | 2008-05-04 23:29:38 +0000 |
| commit | 43d7128c1450d36af259094b7cf39c0c4d17908c (patch) | |
| tree | dec162871c2e0c2defef809d28858069fac12065 /sys/dev/dcons | |
| parent | 228d330b1a327345e2e1a7dbb9c6122b19604547 (diff) | |
Notes
Diffstat (limited to 'sys/dev/dcons')
| -rw-r--r-- | sys/dev/dcons/dcons_os.c | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/sys/dev/dcons/dcons_os.c b/sys/dev/dcons/dcons_os.c index 7eb89aadbae8..5715343e721c 100644 --- a/sys/dev/dcons/dcons_os.c +++ b/sys/dev/dcons/dcons_os.c @@ -198,22 +198,36 @@ extern struct gdb_dbgport *gdb_cur; static int dcons_check_break(struct dcons_softc *dc, int c) { +#if __FreeBSD_version >= 502122 + int kdb_brk; +#endif if (c < 0) return (c); #if __FreeBSD_version >= 502122 - if (kdb_alt_break(c, &dc->brk_state)) { - if ((dc->flags & DC_GDB) != 0) { + if ((kdb_brk = kdb_alt_break(c, &dc->brk_state)) != 0) { + switch (kdb_brk) { + case KDB_REQ_DEBUGGER: + + if ((dc->flags & DC_GDB) != 0) { #ifdef GDB - if (gdb_cur == &dcons_gdb_dbgport) { - kdb_dbbe_select("gdb"); - kdb_enter(KDB_WHY_BREAK, - "Break sequence on dcons gdb port"); - } + if (gdb_cur == &dcons_gdb_dbgport) { + kdb_dbbe_select("gdb"); + kdb_enter(KDB_WHY_BREAK, + "Break sequence on dcons gdb port"); + } #endif - } else - kdb_enter(KDB_WHY_BREAK, - "Break sequence on dcons console port"); + } else + kdb_enter(KDB_WHY_BREAK, + "Break sequence on dcons console port"); + break; + case KDB_REQ_PANIC: + kdb_panic("Panic sequence on dcons console port"); + break; + case KDB_REQ_BREAK: + kdb_reboot(); + break; + } } #else switch (dc->brk_state) { |
