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/amba_device.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/amba_device.cc')
-rw-r--r-- | src/dev/arm/amba_device.cc | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/dev/arm/amba_device.cc b/src/dev/arm/amba_device.cc index 81c740aec..0acd7208a 100644 --- a/src/dev/arm/amba_device.cc +++ b/src/dev/arm/amba_device.cc @@ -50,22 +50,29 @@ AmbaDevice::AmbaDevice(const Params *p) { } +AmbaDmaDevice::AmbaDmaDevice(const Params *p) + : DmaDevice(p), ambaId(ULL(0xb105f00d00000000) | p->amba_id) +{ +} + + +namespace AmbaDev { bool -AmbaDevice::readId(PacketPtr pkt) +readId(PacketPtr pkt, uint64_t amba_id, Addr pio_addr) { - Addr daddr = pkt->getAddr() - pioAddr; + Addr daddr = pkt->getAddr() - pio_addr; if (daddr < AMBA_PER_ID0 || daddr > AMBA_CEL_ID3) return false; pkt->allocate(); - daddr -= AMBA_PER_ID0; - daddr <<= 1; + int byte = (daddr - AMBA_PER_ID0) << 1; // Too noisy right now - //DPRINTF(AMBA, "Returning %#x for offset %#x(%d)\n", (ambaId >> daddr) & 0xFF, - // pkt->getAddr() - pioAddr, daddr); + DPRINTF(AMBA, "Returning %#x for offset %#x(%d)\n", (amba_id >> byte) & 0xFF, + pkt->getAddr() - pio_addr, byte); assert(pkt->getSize() == 4); - pkt->set<uint32_t>((ambaId >> daddr) & 0xFF); + pkt->set<uint32_t>((amba_id >> byte) & 0xFF); return true; } +} // namespace AmbaDev |