diff options
author | Steve Reinhardt <Steve.Reinhardt@amd.com> | 2008-09-29 23:30:14 -0700 |
---|---|---|
committer | Steve Reinhardt <Steve.Reinhardt@amd.com> | 2008-09-29 23:30:14 -0700 |
commit | 7bf6a219db91406df91d4e9323b47e6d70ed73fb (patch) | |
tree | 41c9cc9fc047aed0affaf6acb9d38d01c99c874c | |
parent | 45cba35fc11bbe4e57d9615cfbb79580904ef820 (diff) | |
download | gem5-7bf6a219db91406df91d4e9323b47e6d70ed73fb.tar.xz |
Make overriding port assignments in Python work,
and print better error messages when it doesn't.
-rw-r--r-- | src/dev/io_device.hh | 9 | ||||
-rw-r--r-- | src/python/m5/params.py | 3 |
2 files changed, 9 insertions, 3 deletions
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 |