From: Nikos Nikoleris Date: Mon, 4 Jun 2018 15:30:50 +0000 (+0100) Subject: mem: Use address range to find the right physical address X-Git-Tag: v19.0.0.0~2038 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=353722e76e6f2303a3990b974e27bc055c584958;p=gem5.git mem: Use address range to find the right physical address Previously, we used the start address to determine the right physical memory while servicing memory requests. This change uses the full address range to correctly determine the right physical memory and expose bugs where requests might not fully map to a single physical memory. Change-Id: I183d7552918106000f917a62ceb877511ff0ff71 Reviewed-on: https://gem5-review.googlesource.com/11118 Reviewed-by: Jason Lowe-Power Maintainer: Nikos Nikoleris --- diff --git a/src/mem/physical.cc b/src/mem/physical.cc index fdc88a8c0..280620430 100644 --- a/src/mem/physical.cc +++ b/src/mem/physical.cc @@ -278,8 +278,8 @@ void PhysicalMemory::access(PacketPtr pkt) { assert(pkt->isRequest()); - Addr addr = pkt->getAddr(); - const auto& m = addrMap.contains(addr); + AddrRange addr_range = RangeSize(pkt->getAddr(), pkt->getSize()); + const auto& m = addrMap.contains(addr_range); assert(m != addrMap.end()); m->second->access(pkt); } @@ -288,8 +288,8 @@ void PhysicalMemory::functionalAccess(PacketPtr pkt) { assert(pkt->isRequest()); - Addr addr = pkt->getAddr(); - const auto& m = addrMap.contains(addr); + AddrRange addr_range = RangeSize(pkt->getAddr(), pkt->getSize()); + const auto& m = addrMap.contains(addr_range); assert(m != addrMap.end()); m->second->functionalAccess(pkt); }