Gabe Black has submitted this change and it was merged. ( https://gem5-review.googlesource.com/c/public/gem5/+/18170 )

Change subject: python: Generalize the Port.splice function.
......................................................................

python: Generalize the Port.splice function.

Now that the MASTER and SLAVE roles aren't special, the splice function
needs to be able to handle arbitrarily role-d peers.

Change-Id: I22a28b7cdcb93f7f370730b7e38b0e6d3500a6a0
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/18170
Tested-by: kokoro <[email protected]>
Reviewed-by: Andreas Sandberg <[email protected]>
Maintainer: Andreas Sandberg <[email protected]>
---
M src/python/m5/params.py
1 file changed, 22 insertions(+), 21 deletions(-)

Approvals:
  Andreas Sandberg: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/python/m5/params.py b/src/python/m5/params.py
index 9b2ee39..60d4a14 100644
--- a/src/python/m5/params.py
+++ b/src/python/m5/params.py
@@ -1895,35 +1895,36 @@
         if other.peer is not self:
             other.connect(self)

-    # Allow a master/slave port pair to be spliced between
-    # a port and its connected peer. Useful operation for connecting
-    # instrumentation structures into a system when it is necessary
-    # to connect the instrumentation after the full system has been
-    # constructed.
-    def splice(self, new_master_peer, new_slave_peer):
+    # Allow a compatible port pair to be spliced between a port and its
+    # connected peer. Useful operation for connecting instrumentation
+    # structures into a system when it is necessary to connect the
+    # instrumentation after the full system has been constructed.
+    def splice(self, new_1, new_2):
         if not self.peer or proxy.isproxy(self.peer):
fatal("Port %s not connected, cannot splice in new peers\n", self)

-        if not isinstance(new_master_peer, PortRef) or \
-           not isinstance(new_slave_peer, PortRef):
+ if not isinstance(new_1, PortRef) or not isinstance(new_2, PortRef):
             raise TypeError(
                   "Splicing non-port references '%s','%s' to port '%s'" % \
-                  (new_master_peer, new_slave_peer, self))
+                  (new_1, new_2, self))

         old_peer = self.peer
-        if self.role == 'SLAVE':
-            self.peer = new_master_peer
-            old_peer.peer = new_slave_peer
-            new_master_peer.connect(self)
-            new_slave_peer.connect(old_peer)
-        elif self.role == 'MASTER':
-            self.peer = new_slave_peer
-            old_peer.peer = new_master_peer
-            new_slave_peer.connect(self)
-            new_master_peer.connect(old_peer)
+
+        if Port.is_compat(old_peer, new_1) and Port.is_compat(self, new_2):
+            old_peer.peer = new_1
+            new_1.peer = old_peer
+            self.peer = new_2
+            new_2.peer = self
+ elif Port.is_compat(old_peer, new_2) and Port.is_compat(self, new_1):
+            old_peer.peer = new_2
+            new_2.peer = old_peer
+            self.peer = new_1
+            new_1.peer = self
         else:
-            panic("Port %s has unknown role, "+\
-                  "cannot splice in new peers\n", self)
+ fatal("Ports %s(%s) and %s(%s) can't be compatibly spliced with "
+                    "%s(%s) and %s(%s)", self, self.role,
+                    old_peer, old_peer.role, new_1, new_1.role,
+                    new_2, new_2.role)

     def clone(self, simobj, memo):
         if self in memo:

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/18170
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I22a28b7cdcb93f7f370730b7e38b0e6d3500a6a0
Gerrit-Change-Number: 18170
Gerrit-PatchSet: 5
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-Reviewer: Andreas Sandberg <[email protected]>
Gerrit-Reviewer: Anthony Gutierrez <[email protected]>
Gerrit-Reviewer: Gabe Black <[email protected]>
Gerrit-Reviewer: Jason Lowe-Power <[email protected]>
Gerrit-Reviewer: Nikos Nikoleris <[email protected]>
Gerrit-Reviewer: kokoro <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to