summaryrefslogtreecommitdiffstats
path: root/sys/dev/sab
diff options
context:
space:
mode:
authorjoerg <joerg@FreeBSD.org>2004-06-08 11:58:34 +0000
committerjoerg <joerg@FreeBSD.org>2004-06-08 11:58:34 +0000
commit89b27dc636039a2d99d5d97c3ded9e0172355ebc (patch)
treed687e6ae7337003b3690cbfcf207ba4a149e5f19 /sys/dev/sab
parent75d585e46d3fcddefa3b742d33c2fd2e327f8a16 (diff)
downloadFreeBSD-src-89b27dc636039a2d99d5d97c3ded9e0172355ebc.zip
FreeBSD-src-89b27dc636039a2d99d5d97c3ded9e0172355ebc.tar.gz
Implement the BREAK_TO_DEBUGGER option for sab(4).
Diffstat (limited to 'sys/dev/sab')
-rw-r--r--sys/dev/sab/sab.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/dev/sab/sab.c b/sys/dev/sab/sab.c
index 0193431..083b85a 100644
--- a/sys/dev/sab/sab.c
+++ b/sys/dev/sab/sab.c
@@ -578,6 +578,12 @@ sabtty_intr(struct sabtty_softc *sc)
needsoft = 1;
}
+#if defined(DDB) && defined(BREAK_TO_DEBUGGER)
+ if (sc->sc_console != 0 && (isr1 & SAB_ISR1_BRK) != 0) {
+ brk = 1;
+ }
+#endif
+
if (isr1 & SAB_ISR1_XPR) {
if (sc->sc_ocnt > 0) {
len = min(sc->sc_ocnt, 32);
@@ -675,8 +681,13 @@ sabttyopen(dev_t dev, int flags, int mode, struct thread *td)
SAB_WRITE(sc->sc_parent, SAB_IPC, sc->sc_parent->sc_ipc);
sc->sc_imr0 = SAB_IMR0_PERR | SAB_IMR0_FERR | SAB_IMR0_PLLA;
SAB_WRITE(sc, SAB_IMR0, sc->sc_imr0);
+#if defined(DDB) && defined(BREAK_TO_DEBUGGER)
+ sc->sc_imr1 = SAB_IMR1_ALLS | SAB_IMR1_XDU |
+ SAB_IMR1_TIN | SAB_IMR1_CSC | SAB_IMR1_XMR | SAB_IMR1_XPR;
+#else
sc->sc_imr1 = SAB_IMR1_BRK | SAB_IMR1_ALLS | SAB_IMR1_XDU |
SAB_IMR1_TIN | SAB_IMR1_CSC | SAB_IMR1_XMR | SAB_IMR1_XPR;
+#endif
SAB_WRITE(sc, SAB_IMR1, sc->sc_imr1);
SAB_WRITE(sc, SAB_CCR0, SAB_READ(sc, SAB_CCR0) | SAB_CCR0_PU);
sabtty_cec_wait(sc);
OpenPOWER on IntegriCloud