summaryrefslogtreecommitdiff
path: root/src/mem/packet_queue.cc
diff options
context:
space:
mode:
authorDaniel R. Carvalho <odanrc@yahoo.com.br>2019-02-11 14:19:57 +0100
committerDaniel Carvalho <odanrc@yahoo.com.br>2019-04-19 16:34:00 +0000
commitd4cee4dc66e175dd6cea7e9bcbe815a7d2d35462 (patch)
tree1a752ebda1a8a5c85dc9bd8471050f48a2e7ed8a /src/mem/packet_queue.cc
parent9f32d74db86c8977ab16f2671830f6cdfe3c068b (diff)
downloadgem5-d4cee4dc66e175dd6cea7e9bcbe815a7d2d35462.tar.xz
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 <odanrc@yahoo.com.br> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17533 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Maintainer: Jason Lowe-Power <jason@lowepower.com> Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Diffstat (limited to 'src/mem/packet_queue.cc')
-rw-r--r--src/mem/packet_queue.cc7
1 files changed, 3 insertions, 4 deletions
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);