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
|
@ -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;
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
Loading…
Reference in a new issue