diff options
author | 2011-03-23 15:51:11 +0000 | |
---|---|---|
committer | 2011-03-23 15:51:11 +0000 | |
commit | 1bbc751c44bf933fa2a979f16162aaf4a626c5e9 (patch) | |
tree | d63b6b578cad23dd86bdfa37805565575d48d734 | |
parent | cache user name for ~user (diff) | |
download | wireguard-openbsd-1bbc751c44bf933fa2a979f16162aaf4a626c5e9.tar.xz wireguard-openbsd-1bbc751c44bf933fa2a979f16162aaf4a626c5e9.zip |
only read from the UART if there is something to read. fix beagle, otherwise
it will crash with 'External Non-Linefetch Abort (S)'.
similar diff provided by drahn@. tested by jasper@, deraadt@ ok.
-rw-r--r-- | sys/dev/ic/com.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/ic/com.c b/sys/dev/ic/com.c index e8f51ee8dc8..a85ddb5989d 100644 --- a/sys/dev/ic/com.c +++ b/sys/dev/ic/com.c @@ -1,4 +1,4 @@ -/* $OpenBSD: com.c,v 1.145 2010/08/28 12:48:14 miod Exp $ */ +/* $OpenBSD: com.c,v 1.146 2011/03/23 15:51:11 fgsch Exp $ */ /* $NetBSD: com.c,v 1.82.4.1 1996/06/02 09:08:00 mrg Exp $ */ /* @@ -1789,7 +1789,8 @@ com_attach_subr(struct com_softc *sc) /* clear and disable fifo */ bus_space_write_1(iot, ioh, com_fifo, FIFO_RCV_RST | FIFO_XMT_RST); - (void)bus_space_read_1(iot, ioh, com_data); + if (ISSET(bus_space_read_1(iot, ioh, com_lsr), LSR_RXRDY)) + (void)bus_space_read_1(iot, ioh, com_data); bus_space_write_1(iot, ioh, com_fifo, 0); sc->sc_mcr = 0; |