diff --git a/src/mem/cache/base.hh b/src/mem/cache/base.hh index 4b89be967..2787eea8c 100644 --- a/src/mem/cache/base.hh +++ b/src/mem/cache/base.hh @@ -484,15 +484,11 @@ class BaseCache : public MemObject return blkSize; } - - Addr blockAlign(Addr addr) const { return (addr & ~(Addr(blkSize - 1))); } - - const AddrRangeList &getAddrRanges() const { return addrRanges; } MSHR *allocateMissBuffer(PacketPtr pkt, Tick time, bool sched_send = true) { - MSHR *mshr = mshrQueue.allocate(blockAlign(pkt->getAddr()), blkSize, + MSHR *mshr = mshrQueue.allocate(pkt->getBlockAddr(blkSize), blkSize, pkt, time, order++, allocOnFill(pkt->cmd)); @@ -513,7 +509,7 @@ class BaseCache : public MemObject // should only see writes or clean evicts here assert(pkt->isWrite() || pkt->cmd == MemCmd::CleanEvict); - Addr blk_addr = blockAlign(pkt->getAddr()); + Addr blk_addr = pkt->getBlockAddr(blkSize); WriteQueueEntry *wq_entry = writeBuffer.findMatch(blk_addr, pkt->isSecure()); diff --git a/src/mem/cache/cache.cc b/src/mem/cache/cache.cc index 5f7802030..09148100e 100644 --- a/src/mem/cache/cache.cc +++ b/src/mem/cache/cache.cc @@ -737,7 +737,7 @@ Cache::recvTimingReq(PacketPtr pkt) } else { // miss - Addr blk_addr = blockAlign(pkt->getAddr()); + Addr blk_addr = pkt->getBlockAddr(blkSize); // ignore any existing MSHR if we are dealing with an // uncacheable request @@ -961,7 +961,7 @@ Cache::createMissPacket(PacketPtr cpu_pkt, CacheBlk *blk, } // the packet should be block aligned - assert(pkt->getAddr() == blockAlign(pkt->getAddr())); + assert(pkt->getAddr() == pkt->getBlockAddr(blkSize)); pkt->allocate(); DPRINTF(Cache, "%s: created %s from %s\n", __func__, pkt->print(), @@ -1149,7 +1149,7 @@ Cache::functionalAccess(PacketPtr pkt, bool fromCpuSide) return; } - Addr blk_addr = blockAlign(pkt->getAddr()); + Addr blk_addr = pkt->getBlockAddr(blkSize); bool is_secure = pkt->isSecure(); CacheBlk *blk = tags->findBlock(pkt->getAddr(), is_secure); MSHR *mshr = mshrQueue.findMatch(blk_addr, is_secure); @@ -1731,7 +1731,7 @@ Cache::handleFill(PacketPtr pkt, CacheBlk *blk, PacketList &writebacks, #endif // When handling a fill, we should have no writes to this line. - assert(addr == blockAlign(addr)); + assert(addr == pkt->getBlockAddr(blkSize)); assert(!writeBuffer.findMatch(addr, is_secure)); if (blk == nullptr) { @@ -2092,7 +2092,7 @@ Cache::recvTimingSnoopReq(PacketPtr pkt) bool is_secure = pkt->isSecure(); CacheBlk *blk = tags->findBlock(pkt->getAddr(), is_secure); - Addr blk_addr = blockAlign(pkt->getAddr()); + Addr blk_addr = pkt->getBlockAddr(blkSize); MSHR *mshr = mshrQueue.findMatch(blk_addr, is_secure); // Update the latency cost of the snoop so that the crossbar can @@ -2281,7 +2281,7 @@ Cache::getNextQueueEntry() // If we have a miss queue slot, we can try a prefetch PacketPtr pkt = prefetcher->getPacket(); if (pkt) { - Addr pf_addr = blockAlign(pkt->getAddr()); + Addr pf_addr = pkt->getBlockAddr(blkSize); if (!tags->findBlock(pf_addr, pkt->isSecure()) && !mshrQueue.findMatch(pf_addr, pkt->isSecure()) && !writeBuffer.findMatch(pf_addr, pkt->isSecure())) {