dev-arm: Relax size constraint on AMBA ID registers

This patch is allowing non word sized accesses to the AMBA ID
registers.

Change-Id: I61a7163a3b4120e8dbcdbd6d9b83d33a7996f979
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/31175
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Giacomo Travaglini
2020-07-10 16:16:22 +01:00
parent 78f2f4fd6d
commit a1a0dd8d97
5 changed files with 6 additions and 6 deletions

View File

@@ -80,7 +80,7 @@ AmbaDevice::readId(PacketPtr pkt, uint64_t amba_id, Addr pio_addr)
DPRINTF(AMBA, "Returning %#x for offset %#x(%d)\n",
(amba_id >> byte) & 0xFF,
pkt->getAddr() - pio_addr, byte);
assert(pkt->getSize() == 4);
pkt->setLE<uint32_t>((amba_id >> byte) & 0xFF);
pkt->setUintX((amba_id >> byte) & 0xFF, LittleEndianByteOrder);
return true;
}

View File

@@ -95,7 +95,7 @@ Pl050::read(PacketPtr pkt)
default:
if (readId(pkt, ambaId, pioAddr)) {
// Hack for variable size accesses
data = pkt->getLE<uint32_t>();
data = pkt->getUintX(LittleEndianByteOrder);
break;
}

View File

@@ -137,7 +137,7 @@ Pl011::read(PacketPtr pkt)
default:
if (readId(pkt, AMBA_ID, pioAddr)) {
// Hack for variable size accesses
data = pkt->getLE<uint32_t>();
data = pkt->getUintX(LittleEndianByteOrder);
break;
}

View File

@@ -182,7 +182,7 @@ Pl111::read(PacketPtr pkt)
default:
if (readId(pkt, AMBA_ID, pioAddr)) {
// Hack for variable size accesses
data = pkt->getLE<uint32_t>();
data = pkt->getUintX(LittleEndianByteOrder);
break;
} else if (daddr >= CrsrImage && daddr <= 0xBFC) {
// CURSOR IMAGE

View File

@@ -90,7 +90,7 @@ PL031::read(PacketPtr pkt)
default:
if (readId(pkt, ambaId, pioAddr)) {
// Hack for variable sized access
data = pkt->getLE<uint32_t>();
data = pkt->getUintX(LittleEndianByteOrder);
break;
}
panic("Tried to read PL031 at offset %#x that doesn't exist\n", daddr);