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/uart/uart_core.c | |
| parent | 228d330b1a327345e2e1a7dbb9c6122b19604547 (diff) | |
Notes
Diffstat (limited to 'sys/dev/uart/uart_core.c')
| -rw-r--r-- | sys/dev/uart/uart_core.c | 20 |
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; } |
