diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2006-10-16 15:56:53 -0400 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2006-10-16 15:56:53 -0400 |
commit | 519d11bab32e0ec4cf73f3b1c80f0e77a43155d2 (patch) | |
tree | b9bdd19e2f2aa2698da47d82615d4b5d864eb8cc /src/mem/tport.cc | |
parent | f1661baf30faf76dbad7d23aeac0c3dbe4dd045c (diff) | |
parent | 9202422d6ebb7a17936bee1b9aaa427541156d13 (diff) | |
download | gem5-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.cc | 18 |
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 |