misc: add a MasterId to the ExternalPort
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>
This commit is contained in:
parent
164d9bd732
commit
41a6158954
3 changed files with 11 additions and 1 deletions
|
@ -35,8 +35,10 @@
|
|||
#
|
||||
# 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')
|
||||
|
|
|
@ -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 &
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue