summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDale Rahn <drahn@cvs.openbsd.org>2011-05-22 22:36:54 +0000
committerDale Rahn <drahn@cvs.openbsd.org>2011-05-22 22:36:54 +0000
commit44f96cec27921325881829c52b084ed9b5f78668 (patch)
treeacb5f0dd2fd5a290787112dca31997b6b872995a
parent8705bf0fc617b543ad97dde03b83f15330d1144d (diff)
Fix a problem found where one SOC has a uart implementation that causes bus
errors if the fifo is read when the fifo is empty. Dont read an empty fifo. ok deraaadt@ fgsch@
-rw-r--r--sys/dev/ic/com.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/ic/com.c b/sys/dev/ic/com.c
index a85ddb5989d..03769a08109 100644
--- a/sys/dev/ic/com.c
+++ b/sys/dev/ic/com.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: com.c,v 1.146 2011/03/23 15:51:11 fgsch Exp $ */
+/* $OpenBSD: com.c,v 1.147 2011/05/22 22:36:53 drahn Exp $ */
/* $NetBSD: com.c,v 1.82.4.1 1996/06/02 09:08:00 mrg Exp $ */
/*
@@ -538,7 +538,8 @@ compwroff(struct com_softc *sc)
*/
bus_space_write_1(iot, ioh, com_fifo, 0);
delay(100);
- (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);
delay(100);
bus_space_write_1(iot, ioh, com_fifo,
FIFO_RCV_RST | FIFO_XMT_RST);