misc: add a MasterId to the ExternalPort
authorChristian Menard <Christian.Menard@tu-dresden.de>
Fri, 10 Feb 2017 00:14:58 +0000 (19:14 -0500)
committerChristian Menard <Christian.Menard@tu-dresden.de>
Fri, 10 Feb 2017 00:14:58 +0000 (19:14 -0500)
The Request constructor requires a MasterID. However, an external
transactor has no chance of getting a MasterID as it does not have a
pointer to the System. This patch adds a MasterID to ExternalMaster to
allow external modules to easily genrerate new Requests.

Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
src/mem/ExternalMaster.py
src/mem/external_master.cc
src/mem/external_master.hh

index 492da1dd19e61e0e7cc96b8ed36a7f05ba3d139b..44b49971a854d9635f6bfd3428964d3d89f747a7 100644 (file)
 #
 # Authors: Andrew Bardsley
 #          Curtis Dunham
+#          Christian Menard
 
 from m5.params import *
+from m5.proxy import *
 from MemObject import MemObject
 
 class ExternalMaster(MemObject):
@@ -50,3 +52,5 @@ class ExternalMaster(MemObject):
     port_data = Param.String('stub', 'A string to pass to the port'
         ' handler (in a format specific to the handler) to describe how'
         ' the port should be bound/bindable/discoverable')
+
+    system = Param.System(Parent.any, 'System this external port belongs to')
index 1430199502f610fb5f0b77b1efe4b2f65911acbd..e0e8c1e87bfd0508d1436dde9cc6f039d6ca9ab1 100644 (file)
@@ -36,6 +36,7 @@
  *
  * Authors: Andrew Bardsley
  *          Curtis Dunham
+ *          Christian Menard
  */
 
 #include "mem/external_master.hh"
@@ -45,6 +46,7 @@
 
 #include "base/trace.hh"
 #include "debug/ExternalPort.hh"
+#include "sim/system.hh"
 
 std::map<std::string, ExternalMaster::Handler *>
     ExternalMaster::portHandlers;
@@ -54,7 +56,8 @@ ExternalMaster::ExternalMaster(ExternalMasterParams *params) :
     externalPort(NULL),
     portName(params->name + ".port"),
     portType(params->port_type),
-    portData(params->port_data)
+    portData(params->port_data),
+    masterId(params->system->getMasterId(params->name))
 {}
 
 BaseMasterPort &
index 3a5627d49cabfeaf7264547f3338bf8cf7e2bd41..7303de062aadc1a7477677fe8c5476abefe149a5 100644 (file)
@@ -36,6 +36,7 @@
  *
  * Authors: Andrew Bardsley
  *          Curtis Dunham
+ *          Christian Menard
  */
 
 /**
@@ -129,6 +130,8 @@ class ExternalMaster : public MemObject
         Handler *handler);
 
     void init();
+
+    const MasterID masterId;
 };