summaryrefslogtreecommitdiff
path: root/src/dev/arm/pl011.cc
diff options
context:
space:
mode:
authorAli Saidi <Ali.Saidi@arm.com>2010-08-23 11:18:40 -0500
committerAli Saidi <Ali.Saidi@arm.com>2010-08-23 11:18:40 -0500
commitc0ca01ec368cc02bbc9e2d14e93183fe263ee09b (patch)
treefba0726eb20ac03f40e090e1f8f25f3845ac053f /src/dev/arm/pl011.cc
parent330fada1aa8fa3134c97ef44aba5a84d8620b8ae (diff)
downloadgem5-c0ca01ec368cc02bbc9e2d14e93183fe263ee09b.tar.xz
ARM: Change how the AMBA device ID checking is done to make it more generic
Diffstat (limited to 'src/dev/arm/pl011.cc')
-rw-r--r--src/dev/arm/pl011.cc12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/dev/arm/pl011.cc b/src/dev/arm/pl011.cc
index 2afc9977d..555636f04 100644
--- a/src/dev/arm/pl011.cc
+++ b/src/dev/arm/pl011.cc
@@ -41,6 +41,7 @@
*/
#include "base/trace.hh"
+#include "dev/arm/amba_device.hh"
#include "dev/arm/gic.hh"
#include "dev/arm/pl011.hh"
#include "dev/terminal.hh"
@@ -113,15 +114,12 @@ Pl011::read(PacketPtr pkt)
data = maskInt;
break;
default:
- if (daddr >= UART_PER_ID0 && daddr <= UART_CEL_ID3) {
- // AMBA ID information
- int byte;
- byte = (daddr - UART_PER_ID0) << 1;
- DPRINTF(AMBA, "--daddr=%#x shift=%d val=%#x\n", daddr, byte,
- (ULL(0xb105f00d00341011) >> byte) & 0xFF);
- data = (ULL(0xb105f00d00341011) >> byte) & 0xFF;
+ if (AmbaDev::readId(pkt, AMBA_ID, pioAddr)) {
+ // Hack for variable size accesses
+ data = pkt->get<uint32_t>();
break;
}
+
panic("Tried to read PL011 at offset %#x that doesn't exist\n", daddr);
break;
}