summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Nash <benash@umich.edu>2005-08-16 15:45:30 -0400
committerBenjamin Nash <benash@umich.edu>2005-08-16 15:45:30 -0400
commit979d609656c8ab5e8345e21c401fa542e0138168 (patch)
treeb0cfedf1f452a9c673d2d39ded416e21f09e5d36
parent0d82e0f8b6d44bc759c3cd7d1e4d499fbbdc459e (diff)
parent1906abcde04c7f9af8186ac1a8a726a9ea80936f (diff)
downloadgem5-979d609656c8ab5e8345e21c401fa542e0138168.tar.xz
Merge zed.eecs.umich.edu:/.automount/fox/y/mserrano/m5_dir/m5
into zed.eecs.umich.edu:/z/benash/bk/m5 --HG-- extra : convert_revision : 9b7ca872187a13179118ad0651301d531332dc63
-rw-r--r--dev/uart8250.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/dev/uart8250.cc b/dev/uart8250.cc
index bbde14769..2ad020462 100644
--- a/dev/uart8250.cc
+++ b/dev/uart8250.cc
@@ -147,13 +147,15 @@ Uart8250::read(MemReqPtr &req, uint8_t *data)
case 0x2: // Intr Identification Register (IIR)
DPRINTF(Uart, "IIR Read, status = %#x\n", (uint32_t)status);
- //Tx interrupts are cleared on IIR reads
- status &= ~TX_INT;
-
- if (status & RX_INT)
+ if (status & RX_INT) /* Rx data interrupt has a higher priority */
*(uint8_t*)data = IIR_RXID;
+ else if (status & TX_INT)
+ *(uint8_t*)data = IIR_TXID;
else
*(uint8_t*)data = IIR_NOPEND;
+
+ //Tx interrupts are cleared on IIR reads
+ status &= ~TX_INT;
break;
case 0x3: // Line Control Register (LCR)
*(uint8_t*)data = LCR;