From: Mark Kettenis Subject: exuart(4): Recognize a BREAK To: tech@openbsd.org Date: Thu, 03 Jul 2025 00:19:42 +0200 Diff below makes the Apple variant of exuart(4) recognize a BREAK and enter DDB if the ddb.console sysctl is set. The Central Scrutinizer sends a BREAK to the machine when you type: ^_ ^@ ok? Index: dev/fdt/exuart.c =================================================================== RCS file: /cvs/src/sys/dev/fdt/exuart.c,v diff -u -p -r1.12 exuart.c --- dev/fdt/exuart.c 23 Jul 2023 11:16:36 -0000 1.12 +++ dev/fdt/exuart.c 2 Jul 2025 22:17:13 -0000 @@ -209,6 +209,7 @@ exuart_attach(struct device *parent, str cn_tab->cn_dev = makedev(maj, sc->sc_dev.dv_unit); printf(": console"); + SET(sc->sc_hwflags, COM_HW_CONSOLE); } printf("\n"); @@ -385,12 +386,22 @@ exuart_s5l_intr(void *arg) struct exuart_softc *sc = arg; bus_space_tag_t iot = sc->sc_iot; bus_space_handle_t ioh = sc->sc_ioh; - u_int32_t utrstat; + u_int32_t utrstat, uerstat; utrstat = bus_space_read_4(iot, ioh, EXUART_UTRSTAT); + uerstat = bus_space_read_4(iot, ioh, EXUART_UERSTAT); if (sc->sc_tty == NULL) return (0); + +#ifdef DDB + if (uerstat & EXUART_UERSTAT_BREAK) { + if (ISSET(sc->sc_hwflags, COM_HW_CONSOLE)) { + if (db_console) + db_enter(); + } + } +#endif if (utrstat & (EXUART_S5L_UTRSTAT_RXTHRESH | EXUART_S5L_UTRSTAT_RX_TIMEOUT))