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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user