From d4cee4dc66e175dd6cea7e9bcbe815a7d2d35462 Mon Sep 17 00:00:00 2001 From: "Daniel R. Carvalho" Date: Mon, 11 Feb 2019 14:19:57 +0100 Subject: mem: Add packet matching functions Add both block and non-block-aligned packet matching functions, so that both address and secure bits are checked when checking whether a packet matches a request. Change-Id: Id0069befb925d112e06f250741cb47d9dfa249cc Signed-off-by: Daniel R. Carvalho Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17533 Tested-by: kokoro Reviewed-by: Jason Lowe-Power Reviewed-by: Nikos Nikoleris Maintainer: Jason Lowe-Power Maintainer: Nikos Nikoleris --- src/mem/packet_queue.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/mem/packet_queue.cc') diff --git a/src/mem/packet_queue.cc b/src/mem/packet_queue.cc index 282625a76..dd1ba3dcd 100644 --- a/src/mem/packet_queue.cc +++ b/src/mem/packet_queue.cc @@ -72,12 +72,12 @@ PacketQueue::retry() } bool -PacketQueue::hasAddr(Addr addr) const +PacketQueue::checkConflict(const PacketPtr pkt, const int blk_size) const { // caller is responsible for ensuring that all packets have the // same alignment for (const auto& p : transmitList) { - if (p.pkt->getAddr() == addr) + if (p.pkt->matchBlockAddr(pkt, blk_size)) return true; } return false; @@ -138,8 +138,7 @@ PacketQueue::schedSendTiming(PacketPtr pkt, Tick when) auto it = transmitList.end(); while (it != transmitList.begin()) { --it; - if ((forceOrder && it->pkt->getAddr() == pkt->getAddr()) || - it->tick <= when) { + if ((forceOrder && it->pkt->matchAddr(pkt)) || it->tick <= when) { // emplace inserts the element before the position pointed to by // the iterator, so advance it one step transmitList.emplace(++it, when, pkt); -- cgit v1.2.3