From 28c84d28861a1b143d0c0c9087a77e931a233e67 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Sat, 15 Oct 2016 15:11:04 -0500 Subject: arm, dev: pl011 console interactivity Improve PL011 console interactivity Signed-off-by: Jason Lowe-Power --- src/dev/arm/pl011.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/dev/arm/pl011.cc b/src/dev/arm/pl011.cc index e00ee8351..40f34e1fd 100644 --- a/src/dev/arm/pl011.cc +++ b/src/dev/arm/pl011.cc @@ -86,6 +86,11 @@ Pl011::read(PacketPtr pkt) // Since we don't simulate a FIFO for incoming data, we // assume it's empty and clear RXINTR and RTINTR. clearInterrupts(UART_RXINTR | UART_RTINTR); + if (term->dataAvailable()) { + DPRINTF(Uart, "Re-raising interrupt due to more data " + "after UART_DR read\n"); + dataAvailable(); + } } break; case UART_FR: @@ -224,6 +229,11 @@ Pl011::write(PacketPtr pkt) case UART_ICR: DPRINTF(Uart, "Clearing interrupts 0x%x\n", data); clearInterrupts(data); + if (term->dataAvailable()) { + DPRINTF(Uart, "Re-raising interrupt due to more data after " + "UART_ICR write\n"); + dataAvailable(); + } break; default: panic("Tried to write PL011 at offset %#x that doesn't exist\n", daddr); -- cgit v1.2.3