summaryrefslogtreecommitdiff
path: root/src/dev
diff options
context:
space:
mode:
authorMaurice Becker <madnaurice@googlemail.com>2018-09-18 10:27:40 +0200
committerMadMaurice <madnaurice@googlemail.com>2018-09-18 09:58:46 +0000
commit95143897fc9894241c663982496578b67a238be7 (patch)
tree920eb601f983f5f68019d20d58b609d9dc84001e /src/dev
parent1fdf576ec73f676c1bfa2e2524293deab0f5cd68 (diff)
downloadgem5-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.cc5
-rw-r--r--src/dev/arm/pl011.hh2
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;