summaryrefslogtreecommitdiff
path: root/sys/dev/uart
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2008-05-04 23:29:38 +0000
committerPeter Wemm <peter@FreeBSD.org>2008-05-04 23:29:38 +0000
commit43d7128c1450d36af259094b7cf39c0c4d17908c (patch)
treedec162871c2e0c2defef809d28858069fac12065 /sys/dev/uart
parent228d330b1a327345e2e1a7dbb9c6122b19604547 (diff)
Notes
Diffstat (limited to 'sys/dev/uart')
-rw-r--r--sys/dev/uart/uart_core.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/sys/dev/uart/uart_core.c b/sys/dev/uart/uart_core.c
index b47304184960..3b0d64c90ae7 100644
--- a/sys/dev/uart/uart_core.c
+++ b/sys/dev/uart/uart_core.c
@@ -175,9 +175,23 @@ uart_intr_rxready(void *arg)
#if defined(KDB) && defined(ALT_BREAK_TO_DEBUGGER)
if (sc->sc_sysdev != NULL && sc->sc_sysdev->type == UART_DEV_CONSOLE) {
while (rxp != sc->sc_rxput) {
- if (kdb_alt_break(sc->sc_rxbuf[rxp++], &sc->sc_altbrk))
- kdb_enter(KDB_WHY_BREAK,
- "Break sequence on console");
+ int kdb_brk;
+
+ if ((kdb_brk = kdb_alt_break(sc->sc_rxbuf[rxp++],
+ &sc->sc_altbrk)) != 0) {
+ switch (kdb_brk) {
+ case KDB_REQ_DEBUGGER:
+ kdb_enter(KDB_WHY_BREAK,
+ "Break sequence on console");
+ break;
+ case KDB_REQ_PANIC:
+ kdb_panic("Panic sequence on console");
+ break;
+ case KDB_REQ_REBOOT:
+ kdb_reboot();
+ break;
+ }
+ }
if (rxp == sc->sc_rxbufsz)
rxp = 0;
}