summaryrefslogtreecommitdiff
path: root/src/mem/tport.cc
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2006-10-16 15:56:53 -0400
committerGabe Black <gblack@eecs.umich.edu>2006-10-16 15:56:53 -0400
commit519d11bab32e0ec4cf73f3b1c80f0e77a43155d2 (patch)
treeb9bdd19e2f2aa2698da47d82615d4b5d864eb8cc /src/mem/tport.cc
parentf1661baf30faf76dbad7d23aeac0c3dbe4dd045c (diff)
parent9202422d6ebb7a17936bee1b9aaa427541156d13 (diff)
downloadgem5-519d11bab32e0ec4cf73f3b1c80f0e77a43155d2.tar.xz
Merge zizzer.eecs.umich.edu:/bk/newmem
into zeep.eecs.umich.edu:/home/gblack/m5/newmem --HG-- extra : convert_revision : 898976bbd322e55bc234035456df8090c6dcf72d
Diffstat (limited to 'src/mem/tport.cc')
-rw-r--r--src/mem/tport.cc18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/mem/tport.cc b/src/mem/tport.cc
index 456878d0a..21907c0ca 100644
--- a/src/mem/tport.cc
+++ b/src/mem/tport.cc
@@ -33,8 +33,22 @@
void
SimpleTimingPort::recvFunctional(Packet *pkt)
{
- // just do an atomic access and throw away the returned latency
- recvAtomic(pkt);
+ //First check queued events
+ std::list<Packet *>::iterator i = transmitList.begin();
+ std::list<Packet *>::iterator end = transmitList.end();
+ bool cont = true;
+
+ while (i != end && cont) {
+ Packet * target = *i;
+ // If the target contains data, and it overlaps the
+ // probed request, need to update data
+ if (target->intersect(pkt))
+ fixPacket(pkt, target);
+
+ }
+ //Then just do an atomic access and throw away the returned latency
+ if (cont)
+ recvAtomic(pkt);
}
bool