bus: Fix default port handling.

--HG--
extra : convert_revision : 121b6e31cddff17c51fc4f3df20e7e2bde87d04f
This commit is contained in:
Steve Reinhardt 2007-07-26 17:04:12 -07:00
parent c1097d06f7
commit 58250b8e5f

View file

@ -197,7 +197,8 @@ Bus::recvTiming(PacketPtr pkt)
if (dest == Packet::Broadcast) { if (dest == Packet::Broadcast) {
dest_port_id = findPort(pkt->getAddr()); dest_port_id = findPort(pkt->getAddr());
dest_port = interfaces[dest_port_id]; dest_port = (dest_port_id == defaultId) ?
defaultPort : interfaces[dest_port_id];
for (SnoopIter s_iter = snoopPorts.begin(); for (SnoopIter s_iter = snoopPorts.begin();
s_iter != snoopPorts.end(); s_iter != snoopPorts.end();
s_iter++) { s_iter++) {
@ -217,7 +218,8 @@ Bus::recvTiming(PacketPtr pkt)
assert(dest >= 0 && dest < maxId); assert(dest >= 0 && dest < maxId);
assert(dest != src); // catch infinite loops assert(dest != src); // catch infinite loops
dest_port_id = dest; dest_port_id = dest;
dest_port = interfaces[dest_port_id]; dest_port = (dest_port_id == defaultId) ?
defaultPort : interfaces[dest_port_id];
} }
if (dest_port_id == src) { if (dest_port_id == src) {
@ -336,7 +338,8 @@ Bus::recvAtomic(PacketPtr pkt)
int orig_src = pkt->getSrc(); int orig_src = pkt->getSrc();
int target_port_id = findPort(pkt->getAddr()); int target_port_id = findPort(pkt->getAddr());
Port *target_port = interfaces[target_port_id]; Port *target_port = (target_port_id == defaultId) ?
defaultPort : interfaces[target_port_id];
SnoopIter s_end = snoopPorts.end(); SnoopIter s_end = snoopPorts.end();
for (SnoopIter s_iter = snoopPorts.begin(); s_iter != s_end; s_iter++) { for (SnoopIter s_iter = snoopPorts.begin(); s_iter != s_end; s_iter++) {
@ -394,7 +397,7 @@ Bus::recvFunctional(PacketPtr pkt)
assert(pkt->getDest() == Packet::Broadcast); assert(pkt->getDest() == Packet::Broadcast);
int port_id = findPort(pkt->getAddr()); int port_id = findPort(pkt->getAddr());
Port *port = interfaces[port_id]; Port *port = (port_id == defaultId) ? defaultPort : interfaces[port_id];
// The packet may be changed by another bus on snoops, restore the // The packet may be changed by another bus on snoops, restore the
// id after each // id after each
int src_id = pkt->getSrc(); int src_id = pkt->getSrc();