diff options
author | Ali Saidi <Ali.Saidi@arm.com> | 2010-08-23 11:18:40 -0500 |
---|---|---|
committer | Ali Saidi <Ali.Saidi@arm.com> | 2010-08-23 11:18:40 -0500 |
commit | c0ca01ec368cc02bbc9e2d14e93183fe263ee09b (patch) | |
tree | fba0726eb20ac03f40e090e1f8f25f3845ac053f /src/dev/arm/pl011.cc | |
parent | 330fada1aa8fa3134c97ef44aba5a84d8620b8ae (diff) | |
download | gem5-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.cc | 12 |
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; } |