From: Steve Reinhardt Date: Tue, 30 Sep 2008 06:30:14 +0000 (-0700) Subject: Make overriding port assignments in Python work, X-Git-Tag: m5_2.0_beta6~10 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7bf6a219db91406df91d4e9323b47e6d70ed73fb;p=gem5.git Make overriding port assignments in Python work, and print better error messages when it doesn't. --- diff --git a/src/dev/io_device.hh b/src/dev/io_device.hh index 1e2e623f1..e18489378 100644 --- a/src/dev/io_device.hh +++ b/src/dev/io_device.hh @@ -212,7 +212,8 @@ class PioDevice : public MemObject { if (if_name == "pio") { if (pioPort != NULL) - panic("pio port already connected to."); + fatal("%s: pio port already connected to %s", + name(), pioPort->getPeer()->name()); pioPort = new PioPort(this, sys); return pioPort; } else @@ -289,12 +290,14 @@ class DmaDevice : public PioDevice { if (if_name == "pio") { if (pioPort != NULL) - panic("pio port already connected to."); + fatal("%s: pio port already connected to %s", + name(), pioPort->getPeer()->name()); pioPort = new PioPort(this, sys); return pioPort; } else if (if_name == "dma") { if (dmaPort != NULL) - panic("dma port already connected to."); + fatal("%s: dma port already connected to %s", + name(), pioPort->getPeer()->name()); dmaPort = new DmaPort(this, sys); return dmaPort; } else diff --git a/src/python/m5/params.py b/src/python/m5/params.py index 9394b11e2..081bd342e 100644 --- a/src/python/m5/params.py +++ b/src/python/m5/params.py @@ -1004,6 +1004,7 @@ class PortRef(object): if self.peer and not proxy.isproxy(self.peer): print "warning: overwriting port", self, \ "value", self.peer, "with", other + self.peer.peer = None self.peer = other if proxy.isproxy(other): other.set_param_desc(PortParamDesc()) @@ -1046,6 +1047,8 @@ class PortRef(object): if self.ccConnected: # already done this return peer = self.peer + if not self.peer: # nothing to connect to + return connectPorts(self.simobj.getCCObject(), self.name, self.index, peer.simobj.getCCObject(), peer.name, peer.index) self.ccConnected = True