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
This commit is contained in:
parent
14c8e8b227
commit
388d484269
2 changed files with 7 additions and 4 deletions
|
@ -144,7 +144,10 @@ Bus::recvTiming(Packet *pkt)
|
||||||
DPRINTF(Bus, "recvTiming: packet src %d dest %d addr 0x%x cmd %s\n",
|
DPRINTF(Bus, "recvTiming: packet src %d dest %d addr 0x%x cmd %s\n",
|
||||||
pkt->getSrc(), pkt->getDest(), pkt->getAddr(), pkt->cmdString());
|
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
|
// If the bus is busy, or other devices are in line ahead of the current
|
||||||
// one, put this device on the retry list.
|
// one, put this device on the retry list.
|
||||||
|
@ -392,7 +395,7 @@ Bus::recvStatusChange(Port::Status status, int id)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
assert((id < interfaces.size() && id >= 0) || id == -1);
|
assert((id < interfaces.size() && id >= 0) || id == defaultId);
|
||||||
Port *port = interfaces[id];
|
Port *port = interfaces[id];
|
||||||
std::vector<DevMap>::iterator portIter;
|
std::vector<DevMap>::iterator portIter;
|
||||||
std::vector<DevMap>::iterator snoopIter;
|
std::vector<DevMap>::iterator snoopIter;
|
||||||
|
|
|
@ -59,7 +59,7 @@ class Bus : public MemObject
|
||||||
/** the next tick at which the bus will be idle */
|
/** the next tick at which the bus will be idle */
|
||||||
Tick tickNextIdle;
|
Tick tickNextIdle;
|
||||||
|
|
||||||
static const int defaultId = -1;
|
static const int defaultId = -3; //Make it unique from Broadcast
|
||||||
|
|
||||||
struct DevMap {
|
struct DevMap {
|
||||||
int portId;
|
int portId;
|
||||||
|
@ -238,7 +238,7 @@ class Bus : public MemObject
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Port that handles requests that don't match any of the interfaces.*/
|
/** Port that handles requests that don't match any of the interfaces.*/
|
||||||
Port *defaultPort;
|
BusPort *defaultPort;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue