From: Bjoern A. Zeeb Date: Sat, 15 Oct 2016 20:11:04 +0000 (-0500) Subject: arm, dev: pl011 console interactivity X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=28c84d28861a1b143d0c0c9087a77e931a233e67;p=gem5.git arm, dev: pl011 console interactivity Improve PL011 console interactivity Signed-off-by: Jason Lowe-Power --- 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);