diff options
author | Maurice Becker <madnaurice@googlemail.com> | 2018-09-18 10:27:40 +0200 |
---|---|---|
committer | MadMaurice <madnaurice@googlemail.com> | 2018-09-18 09:58:46 +0000 |
commit | 95143897fc9894241c663982496578b67a238be7 (patch) | |
tree | 920eb601f983f5f68019d20d58b609d9dc84001e /src/dev | |
parent | 1fdf576ec73f676c1bfa2e2524293deab0f5cd68 (diff) | |
download | gem5-95143897fc9894241c663982496578b67a238be7.tar.xz |
Pl011: Added registers UART_RSR/UART_ECR
UART_RSR shows errors with the transmission and UART_ECR can clear
those (according to PL011 Technical Reference Manual Revision r1p4). As
these transmission errors never occur, they are implemented as RAZ/WI.
Both registers exist at the same offset 0x004. RSR is read-only, ECR is
write-only.
Signed-off-by: Maurice Becker <madnaurice@googlemail.com>
Change-Id: Ia9d13c90c65feccf3ecec36a782170755b1e1c02
Reviewed-on: https://gem5-review.googlesource.com/12686
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/dev')
-rw-r--r-- | src/dev/arm/pl011.cc | 5 | ||||
-rw-r--r-- | src/dev/arm/pl011.hh | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/dev/arm/pl011.cc b/src/dev/arm/pl011.cc index e47cc6753..5ca9f6087 100644 --- a/src/dev/arm/pl011.cc +++ b/src/dev/arm/pl011.cc @@ -92,6 +92,9 @@ Pl011::read(PacketPtr pkt) } } break; + case UART_RSR: + data = 0x0; // We never have errors + break; case UART_FR: data = UART_FR_CTS | // Clear To Send @@ -205,6 +208,8 @@ Pl011::write(PacketPtr pkt) clearInterrupts(UART_TXINTR); raiseInterrupts(UART_TXINTR); break; + case UART_ECR: // clears errors, ignore + break; case UART_CR: control = data; break; diff --git a/src/dev/arm/pl011.hh b/src/dev/arm/pl011.hh index 2317b3114..5a92d8890 100644 --- a/src/dev/arm/pl011.hh +++ b/src/dev/arm/pl011.hh @@ -118,6 +118,8 @@ class Pl011 : public Uart, public AmbaDevice protected: // Registers static const uint64_t AMBA_ID = ULL(0xb105f00d00341011); static const int UART_DR = 0x000; + static const int UART_RSR = 0x004; + static const int UART_ECR = 0x004; static const int UART_FR = 0x018; static const int UART_FR_CTS = 0x001; static const int UART_FR_RXFE = 0x010; |