diff options
author | Ron Dreslinski <rdreslin@umich.edu> | 2006-10-11 20:54:06 -0400 |
---|---|---|
committer | Ron Dreslinski <rdreslin@umich.edu> | 2006-10-11 20:54:06 -0400 |
commit | 388d484269ea9f68967d22a52edbb9d669ba6cdc (patch) | |
tree | a6170a3fcd9304c9d6ee799ff351ecdb8c3ac24e | |
parent | 14c8e8b2271a78cb3f9f1887a212d9de9f4fcc28 (diff) | |
download | gem5-388d484269ea9f68967d22a52edbb9d669ba6cdc.tar.xz |
Make default ID unique (not broadcast)
Fix a segfault associated with DefaultId
src/mem/bus.cc:
Handle a segfault in the bus when DefaultPort was being used
src/mem/bus.hh:
Make the Default ID more unique (it overlapped with Broadcast ID)
--HG--
extra : convert_revision : 9182805c5cf4d9fe004e6c5be8547a8f41ed7bfe
-rw-r--r-- | src/mem/bus.cc | 7 | ||||
-rw-r--r-- | src/mem/bus.hh | 4 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/mem/bus.cc b/src/mem/bus.cc index 8dd16874a..75ffed0d2 100644 --- a/src/mem/bus.cc +++ b/src/mem/bus.cc @@ -144,7 +144,10 @@ Bus::recvTiming(Packet *pkt) DPRINTF(Bus, "recvTiming: packet src %d dest %d addr 0x%x cmd %s\n", pkt->getSrc(), pkt->getDest(), pkt->getAddr(), pkt->cmdString()); - BusPort *pktPort = interfaces[pkt->getSrc()]; + BusPort *pktPort; + if (pkt->getSrc() == defaultId) + pktPort = defaultPort; + else pktPort = interfaces[pkt->getSrc()]; // If the bus is busy, or other devices are in line ahead of the current // one, put this device on the retry list. @@ -392,7 +395,7 @@ Bus::recvStatusChange(Port::Status status, int id) } } else { - assert((id < interfaces.size() && id >= 0) || id == -1); + assert((id < interfaces.size() && id >= 0) || id == defaultId); Port *port = interfaces[id]; std::vector<DevMap>::iterator portIter; std::vector<DevMap>::iterator snoopIter; diff --git a/src/mem/bus.hh b/src/mem/bus.hh index 6e93f60c4..509b8cf9b 100644 --- a/src/mem/bus.hh +++ b/src/mem/bus.hh @@ -59,7 +59,7 @@ class Bus : public MemObject /** the next tick at which the bus will be idle */ Tick tickNextIdle; - static const int defaultId = -1; + static const int defaultId = -3; //Make it unique from Broadcast struct DevMap { int portId; @@ -238,7 +238,7 @@ class Bus : public MemObject } /** Port that handles requests that don't match any of the interfaces.*/ - Port *defaultPort; + BusPort *defaultPort; public: |