summaryrefslogtreecommitdiff
path: root/src/dev/io_device.cc
diff options
context:
space:
mode:
authorKevin Lim <ktlim@umich.edu>2006-07-06 14:54:09 -0400
committerKevin Lim <ktlim@umich.edu>2006-07-06 14:54:09 -0400
commitc8a37ce71514de9362640e8cb18c1744f0e2f83b (patch)
tree70eb71e46428c20bd6a44eed1d08a019abb70e25 /src/dev/io_device.cc
parent05eef5ee1569f7a1c399a2b358a11323e88a48f8 (diff)
parent4b741100714c6f20749f344ddd4b16459f28df72 (diff)
downloadgem5-c8a37ce71514de9362640e8cb18c1744f0e2f83b.tar.xz
Merge ktlim@zizzer:/bk/newmem
into zamp.eecs.umich.edu:/z/ktlim2/clean/newmem-merge --HG-- extra : convert_revision : 0c4fbbe0826358a6a58f844bec34ce830ffd4ced
Diffstat (limited to 'src/dev/io_device.cc')
-rw-r--r--src/dev/io_device.cc22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/dev/io_device.cc b/src/dev/io_device.cc
index e769ef037..cb4850108 100644
--- a/src/dev/io_device.cc
+++ b/src/dev/io_device.cc
@@ -34,8 +34,8 @@
#include "sim/builder.hh"
-PioPort::PioPort(PioDevice *dev, Platform *p)
- : Port(dev->name() + "-pioport"), device(dev), platform(p)
+PioPort::PioPort(PioDevice *dev, Platform *p, std::string pname)
+ : Port(dev->name() + pname), device(dev), platform(p)
{ }
@@ -79,19 +79,23 @@ PioPort::SendEvent::process()
port->transmitList.push_back(packet);
}
+void
+PioPort::resendNacked(Packet *pkt) {
+ pkt->reinitNacked();
+ if (transmitList.size()) {
+ transmitList.push_front(pkt);
+ } else {
+ if (!Port::sendTiming(pkt))
+ transmitList.push_front(pkt);
+ }
+};
bool
PioPort::recvTiming(Packet *pkt)
{
if (pkt->result == Packet::Nacked) {
- pkt->reinitNacked();
- if (transmitList.size()) {
- transmitList.push_front(pkt);
- } else {
- if (!Port::sendTiming(pkt))
- transmitList.push_front(pkt);
- }
+ resendNacked(pkt);
} else {
Tick latency = device->recvAtomic(pkt);
// turn packet around to go back to requester