Ryan Gambord has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/17609
Change subject: general: Updating Params usage in SimObjects
......................................................................
general: Updating Params usage in SimObjects
Applying standard params() method and usage
Change-Id: Ic3664b37f55d0c0f0de95975190794a266c58350
---
M src/arch/alpha/linux/system.hh
M src/arch/alpha/system.hh
M src/arch/arm/pmu.cc
M src/arch/arm/pmu.hh
M src/arch/mips/system.hh
M src/arch/riscv/system.hh
M src/arch/sparc/system.hh
M src/arch/x86/pagetable_walker.hh
M src/arch/x86/system.hh
M src/cpu/base.hh
M src/dev/arm/base_gic.cc
M src/dev/arm/base_gic.hh
M src/dev/arm/generic_timer.cc
M src/dev/arm/generic_timer.hh
M src/dev/net/sinic.hh
M src/dev/storage/ide_ctrl.hh
M src/mem/comm_monitor.hh
M src/mem/mem_checker_monitor.hh
M src/mem/qos/policy_pf.hh
M src/mem/ruby/network/BasicLink.hh
M src/mem/ruby/network/BasicRouter.hh
M src/mem/ruby/network/fault_model/FaultModel.hh
M src/mem/ruby/network/garnet2.0/GarnetLink.hh
M src/mem/ruby/network/garnet2.0/GarnetNetwork.cc
M src/mem/ruby/network/garnet2.0/NetworkLink.hh
M src/mem/ruby/network/simple/SimpleLink.hh
M src/mem/ruby/network/simple/SimpleNetwork.cc
M src/mem/ruby/slicc_interface/AbstractController.hh
M src/sim/clocked_object.hh
M src/sim/system.hh
30 files changed, 142 insertions(+), 94 deletions(-)
diff --git a/src/arch/alpha/linux/system.hh b/src/arch/alpha/linux/system.hh
index 4f030c9..e56f85f 100644
--- a/src/arch/alpha/linux/system.hh
+++ b/src/arch/alpha/linux/system.hh
@@ -144,7 +144,9 @@
void setDelayLoop(ThreadContext *tc);
- const Params *params() const { return (const Params *)_params; }
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
};
#endif // __ARCH_ALPHA_LINUX_SYSTEM_HH__
diff --git a/src/arch/alpha/system.hh b/src/arch/alpha/system.hh
index d0be461..c52f9da 100644
--- a/src/arch/alpha/system.hh
+++ b/src/arch/alpha/system.hh
@@ -97,7 +97,9 @@
*/
FSTranslatingPortProxy virtProxy;
- const Params *params() const { return (const Params *)_params; }
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
/** Setup all the function events. Must be done after init() for Alpha
since
@@ -128,4 +130,3 @@
};
#endif // __ARCH_ALPHA_SYSTEM_HH__
-
diff --git a/src/arch/arm/pmu.cc b/src/arch/arm/pmu.cc
index 62353cf..b784549 100644
--- a/src/arch/arm/pmu.cc
+++ b/src/arch/arm/pmu.cc
@@ -97,10 +97,10 @@
PMU::setThreadContext(ThreadContext *tc)
{
DPRINTF(PMUVerbose, "Assigning PMU to ContextID %i.\n",
tc->contextId());
- auto pmu_params = static_cast<const ArmPMUParams *>(params());
+ const Params *p = params();
- if (pmu_params->interrupt)
- interrupt = pmu_params->interrupt->get(tc);
+ if (p->interrupt)
+ interrupt = p->interrupt->get(tc);
}
void
diff --git a/src/arch/arm/pmu.hh b/src/arch/arm/pmu.hh
index f5f52133..969a493 100644
--- a/src/arch/arm/pmu.hh
+++ b/src/arch/arm/pmu.hh
@@ -96,7 +96,12 @@
*/
class PMU : public SimObject, public ArmISA::BaseISADevice {
public:
- PMU(const ArmPMUParams *p);
+ typedef ArmPMUParams Params;
+
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
+ PMU(const Params *p);
~PMU();
void addEventProbe(unsigned int id, SimObject *obj, const char *name);
diff --git a/src/arch/mips/system.hh b/src/arch/mips/system.hh
index 6b74ac1..222aa7a 100644
--- a/src/arch/mips/system.hh
+++ b/src/arch/mips/system.hh
@@ -49,6 +49,10 @@
{
public:
typedef MipsSystemParams Params;
+
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
MipsSystem(Params *p);
~MipsSystem();
@@ -76,8 +80,6 @@
#endif
protected:
- const Params *params() const { return (const Params *)_params; }
-
/** Add a function-based event to the console code. */
template <class T>
T *
@@ -91,4 +93,3 @@
};
#endif
-
diff --git a/src/arch/riscv/system.hh b/src/arch/riscv/system.hh
index 85b8d6a..916e164 100644
--- a/src/arch/riscv/system.hh
+++ b/src/arch/riscv/system.hh
@@ -89,7 +89,9 @@
#endif
protected:
- const Params *params() const { return (const Params *)_params; }
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
/** Add a function-based event to the console code. */
template <class T>
@@ -104,4 +106,3 @@
};
#endif
-
diff --git a/src/arch/sparc/system.hh b/src/arch/sparc/system.hh
index ac877a9..1615d4d 100644
--- a/src/arch/sparc/system.hh
+++ b/src/arch/sparc/system.hh
@@ -97,7 +97,9 @@
Tick sysTick;
protected:
- const Params *params() const { return (const Params *)_params; }
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
/** Add a function-based event to reset binary. */
template <class T>
@@ -132,4 +134,3 @@
};
#endif
-
diff --git a/src/arch/x86/pagetable_walker.hh
b/src/arch/x86/pagetable_walker.hh
index c1f4ed2..0371099 100644
--- a/src/arch/x86/pagetable_walker.hh
+++ b/src/arch/x86/pagetable_walker.hh
@@ -194,11 +194,8 @@
typedef X86PagetableWalkerParams Params;
- const Params *
- params() const
- {
- return static_cast<const Params *>(_params);
- }
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
Walker(const Params *params) :
MemObject(params), port(name() + ".port", this),
diff --git a/src/arch/x86/system.hh b/src/arch/x86/system.hh
index c9e90a4..8f61420 100644
--- a/src/arch/x86/system.hh
+++ b/src/arch/x86/system.hh
@@ -78,7 +78,12 @@
{
public:
typedef X86SystemParams Params;
+
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
X86System(Params *p);
+
~X86System();
/**
@@ -101,8 +106,6 @@
void writeOutMPTable(Addr fp,
Addr &fpSize, Addr &tableSize, Addr table = 0);
- const Params *params() const { return (const Params *)_params; }
-
virtual Addr fixFuncEventAddr(Addr addr)
{
// XXX This may eventually have to do something useful.
@@ -111,4 +114,3 @@
};
#endif
-
diff --git a/src/cpu/base.hh b/src/cpu/base.hh
index 9075d4b..357aa76 100644
--- a/src/cpu/base.hh
+++ b/src/cpu/base.hh
@@ -51,24 +51,26 @@
// Before we do anything else, check if this build is the NULL ISA,
// and if so stop here
#include "config/the_isa.hh"
+
#if THE_ISA == NULL_ISA
#include "arch/null/cpu_dummy.hh"
+
#else
#include "arch/interrupts.hh"
#include "arch/isa_traits.hh"
#include "arch/microcode_rom.hh"
#include "base/statistics.hh"
+#include "debug/Mwait.hh"
#include "mem/mem_object.hh"
+#include "params/BaseCPU.hh"
#include "sim/eventq.hh"
#include "sim/full_system.hh"
#include "sim/insttracer.hh"
#include "sim/probe/pmu.hh"
#include "sim/probe/probe.hh"
#include "sim/system.hh"
-#include "debug/Mwait.hh"
class BaseCPU;
-struct BaseCPUParams;
class CheckerCPU;
class ThreadContext;
@@ -296,7 +298,7 @@
public:
typedef BaseCPUParams Params;
const Params *params() const
- { return reinterpret_cast<const Params *>(_params); }
+ { return dynamic_cast<const Params *>(_params); }
BaseCPU(Params *params, bool is_checker = false);
virtual ~BaseCPU();
diff --git a/src/dev/arm/base_gic.cc b/src/dev/arm/base_gic.cc
index a23c123..a008d34 100644
--- a/src/dev/arm/base_gic.cc
+++ b/src/dev/arm/base_gic.cc
@@ -36,15 +36,10 @@
*
* Authors: Andreas Sandberg
*/
-
#include "dev/arm/base_gic.hh"
#include "cpu/thread_context.hh"
#include "dev/arm/realview.hh"
-#include "params/ArmInterruptPin.hh"
-#include "params/ArmPPI.hh"
-#include "params/ArmSPI.hh"
-#include "params/BaseGic.hh"
BaseGic::BaseGic(const Params *p)
: PioDevice(p),
@@ -71,18 +66,12 @@
getSystem()->setGIC(this);
}
-const BaseGic::Params *
-BaseGic::params() const
-{
- return dynamic_cast<const Params *>(_params);
-}
-
-ArmInterruptPinGen::ArmInterruptPinGen(const ArmInterruptPinParams *p)
+ArmInterruptPinGen::ArmInterruptPinGen(const Params *p)
: SimObject(p)
{
}
-ArmSPIGen::ArmSPIGen(const ArmSPIParams *p)
+ArmSPIGen::ArmSPIGen(const Params *p)
: ArmInterruptPinGen(p), pin(new ArmSPI(p->platform, p->num))
{
}
@@ -93,7 +82,7 @@
return pin;
}
-ArmPPIGen::ArmPPIGen(const ArmPPIParams *p)
+ArmPPIGen::ArmPPIGen(const Params *p)
: ArmInterruptPinGen(p)
{
}
@@ -111,7 +100,7 @@
return pin_it->second;
} else {
// Generate PPI Pin
- auto p = static_cast<const ArmPPIParams *>(_params);
+ const Params *p = params();
ArmPPI *pin = new ArmPPI(p->platform, tc, p->num);
pins.insert({cid, pin});
diff --git a/src/dev/arm/base_gic.hh b/src/dev/arm/base_gic.hh
index 7c0cc0e..029083a 100644
--- a/src/dev/arm/base_gic.hh
+++ b/src/dev/arm/base_gic.hh
@@ -48,6 +48,10 @@
#include "arch/arm/system.hh"
#include "dev/io_device.hh"
+#include "params/ArmInterruptPin.hh"
+#include "params/ArmPPI.hh"
+#include "params/ArmSPI.hh"
+#include "params/BaseGic.hh"
class Platform;
class RealView;
@@ -56,22 +60,18 @@
class ArmSPI;
class ArmPPI;
-struct ArmInterruptPinParams;
-struct ArmPPIParams;
-struct ArmSPIParams;
-struct BaseGicParams;
-
class BaseGic : public PioDevice
{
public:
typedef BaseGicParams Params;
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
BaseGic(const Params *p);
virtual ~BaseGic();
void init() override;
- const Params * params() const;
-
/**
* Post an interrupt from a device that is connected to the GIC.
*
@@ -133,7 +133,12 @@
class ArmInterruptPinGen : public SimObject
{
public:
- ArmInterruptPinGen(const ArmInterruptPinParams *p);
+ typedef ArmInterruptPinParams Params;
+
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
+ ArmInterruptPinGen(const Params *p);
virtual ArmInterruptPin* get(ThreadContext *tc = nullptr) = 0;
};
@@ -146,7 +151,12 @@
class ArmSPIGen : public ArmInterruptPinGen
{
public:
- ArmSPIGen(const ArmSPIParams *p);
+ typedef ArmSPIParams Params;
+
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
+ ArmSPIGen(const Params *p);
ArmInterruptPin* get(ThreadContext *tc = nullptr) override;
protected:
@@ -161,7 +171,12 @@
class ArmPPIGen : public ArmInterruptPinGen
{
public:
- ArmPPIGen(const ArmPPIParams *p);
+ typedef ArmPPIParams Params;
+
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
+ ArmPPIGen(const Params *p);
ArmInterruptPin* get(ThreadContext* tc = nullptr) override;
protected:
diff --git a/src/dev/arm/generic_timer.cc b/src/dev/arm/generic_timer.cc
index 396926f..ee01c19 100644
--- a/src/dev/arm/generic_timer.cc
+++ b/src/dev/arm/generic_timer.cc
@@ -219,7 +219,7 @@
updateCounter();
}
-GenericTimer::GenericTimer(GenericTimerParams *p)
+GenericTimer::GenericTimer(Params *p)
: ClockedObject(p),
system(*p->system)
{
@@ -227,12 +227,6 @@
system.setGenericTimer(this);
}
-const GenericTimerParams *
-GenericTimer::params() const
-{
- return dynamic_cast<const GenericTimerParams *>(_params);
-}
-
void
GenericTimer::serialize(CheckpointOut &cp) const
{
@@ -293,7 +287,7 @@
GenericTimer::createTimers(unsigned cpus)
{
assert(timers.size() < cpus);
- auto p = static_cast<const GenericTimerParams *>(_params);
+ const Params *p = params();
const unsigned old_cpu_count(timers.size());
timers.resize(cpus);
@@ -522,7 +516,7 @@
return value;
}
-GenericTimerMem::GenericTimerMem(GenericTimerMemParams *p)
+GenericTimerMem::GenericTimerMem(Params *p)
: PioDevice(p),
ctrlRange(RangeSize(p->base, TheISA::PageBytes)),
timerRange(RangeSize(p->base + TheISA::PageBytes,
TheISA::PageBytes)),
diff --git a/src/dev/arm/generic_timer.hh b/src/dev/arm/generic_timer.hh
index acd8b39..d079f1a 100644
--- a/src/dev/arm/generic_timer.hh
+++ b/src/dev/arm/generic_timer.hh
@@ -45,6 +45,8 @@
#include "arch/arm/system.hh"
#include "base/bitunion.hh"
#include "dev/arm/base_gic.hh"
+#include "params/GenericTimer.hh"
+#include "params/GenericTimerMem.hh"
#include "sim/core.hh"
#include "sim/sim_object.hh"
@@ -54,8 +56,6 @@
/// ARM, Issue C, Chapter 17).
class Checkpoint;
-class GenericTimerParams;
-class GenericTimerMemParams;
/// Global system counter. It is shared by the architected timers.
/// @todo: implement memory-mapped controls
@@ -215,9 +215,12 @@
class GenericTimer : public ClockedObject
{
public:
- const GenericTimerParams * params() const;
+ typedef GenericTimerParams Params;
- GenericTimer(GenericTimerParams *p);
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
+ GenericTimer(Params *p);
void serialize(CheckpointOut &cp) const override;
void unserialize(CheckpointIn &cp) override;
@@ -297,7 +300,12 @@
class GenericTimerMem : public PioDevice
{
public:
- GenericTimerMem(GenericTimerMemParams *p);
+ typedef GenericTimerMemParams Params;
+
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
+ GenericTimerMem(Params *p);
void serialize(CheckpointOut &cp) const override;
void unserialize(CheckpointIn &cp) override;
diff --git a/src/dev/net/sinic.hh b/src/dev/net/sinic.hh
index ab79a5f..4344376 100644
--- a/src/dev/net/sinic.hh
+++ b/src/dev/net/sinic.hh
@@ -79,7 +79,10 @@
*/
public:
typedef SinicParams Params;
- const Params *params() const { return (const Params *)_params; }
+
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
Base(const Params *p);
};
diff --git a/src/dev/storage/ide_ctrl.hh b/src/dev/storage/ide_ctrl.hh
index 24d3da0..53aae54 100644
--- a/src/dev/storage/ide_ctrl.hh
+++ b/src/dev/storage/ide_ctrl.hh
@@ -141,7 +141,10 @@
public:
typedef IdeControllerParams Params;
- const Params *params() const { return (const Params *)_params; }
+
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
IdeController(Params *p);
/** See if a disk is selected based on its pointer */
diff --git a/src/mem/comm_monitor.hh b/src/mem/comm_monitor.hh
index 1eea6a5..dd87b70 100644
--- a/src/mem/comm_monitor.hh
+++ b/src/mem/comm_monitor.hh
@@ -69,7 +69,7 @@
/** Parameters of communication monitor */
typedef CommMonitorParams Params;
const Params* params() const
- { return reinterpret_cast<const Params*>(_params); }
+ { return dynamic_cast<const Params *>(_params); }
/**
* Constructor based on the Python params
diff --git a/src/mem/mem_checker_monitor.hh b/src/mem/mem_checker_monitor.hh
index ba15049..21c8590 100644
--- a/src/mem/mem_checker_monitor.hh
+++ b/src/mem/mem_checker_monitor.hh
@@ -58,7 +58,7 @@
/** Parameters of memchecker monitor */
typedef MemCheckerMonitorParams Params;
const Params* params() const
- { return reinterpret_cast<const Params*>(_params); }
+ { return dynamic_cast<const Params *>(_params); }
/**
* Constructor based on the Python params
diff --git a/src/mem/qos/policy_pf.hh b/src/mem/qos/policy_pf.hh
index c741e9c..8a84b18 100644
--- a/src/mem/qos/policy_pf.hh
+++ b/src/mem/qos/policy_pf.hh
@@ -60,7 +60,7 @@
{
using Params = QoSPropFairPolicyParams;
const Params *params() const
- { return static_cast<const Params *>(_params); }
+ { return dynamic_cast<const Params *>(_params); }
public:
PropFairPolicy(const Params*);
diff --git a/src/mem/ruby/network/BasicLink.hh
b/src/mem/ruby/network/BasicLink.hh
index 755e5c7..b93f054 100644
--- a/src/mem/ruby/network/BasicLink.hh
+++ b/src/mem/ruby/network/BasicLink.hh
@@ -47,7 +47,9 @@
public:
typedef BasicLinkParams Params;
BasicLink(const Params *p);
- const Params *params() const { return (const Params *)_params; }
+ const Params *params() const
+ { return dynamic_cast<const Params *>(_params); }
+
void init();
@@ -71,7 +73,9 @@
public:
typedef BasicExtLinkParams Params;
BasicExtLink(const Params *p);
- const Params *params() const { return (const Params *)_params; }
+ const Params *params() const
+ { return dynamic_cast<const Params *>(_params); }
+
friend class Topology;
};
@@ -81,7 +85,8 @@
public:
typedef BasicIntLinkParams Params;
BasicIntLink(const Params *p);
- const Params *params() const { return (const Params *)_params; }
+ const Params *params() const
+ { return dynamic_cast<const Params *>(_params); }
friend class Topology;
};
diff --git a/src/mem/ruby/network/BasicRouter.hh
b/src/mem/ruby/network/BasicRouter.hh
index a74dadb..f920b16 100644
--- a/src/mem/ruby/network/BasicRouter.hh
+++ b/src/mem/ruby/network/BasicRouter.hh
@@ -41,7 +41,10 @@
public:
typedef BasicRouterParams Params;
BasicRouter(const Params *p);
- const Params *params() const { return (const Params *)_params; }
+
+ const Params *params() const
+ { return dynamic_cast<const Params *>(_params); }
+
void init();
diff --git a/src/mem/ruby/network/fault_model/FaultModel.hh
b/src/mem/ruby/network/fault_model/FaultModel.hh
index 6c68c7b..90dc154 100644
--- a/src/mem/ruby/network/fault_model/FaultModel.hh
+++ b/src/mem/ruby/network/fault_model/FaultModel.hh
@@ -56,8 +56,12 @@
{
public:
typedef FaultModelParams Params;
+
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
FaultModel(const Params *p);
- const Params *params() const { return (const Params *)_params; }
+
/************************************************************************/
/********** THE FAULT TYPES SUPPORTED BY THE FAULT MODEL
***************/
@@ -87,7 +91,8 @@
conf_record_buff_per_vc,
conf_record_vcs,
conf_record_first_fault_type,
- conf_record_last_fault_type = conf_record_first_fault_type +
number_of_fault_types - 1,
+ conf_record_last_fault_type =
+ conf_record_first_fault_type + number_of_fault_types - 1,
fields_per_conf_record
};
diff --git a/src/mem/ruby/network/garnet2.0/GarnetLink.hh
b/src/mem/ruby/network/garnet2.0/GarnetLink.hh
index 55164b6..469f2c4 100644
--- a/src/mem/ruby/network/garnet2.0/GarnetLink.hh
+++ b/src/mem/ruby/network/garnet2.0/GarnetLink.hh
@@ -49,6 +49,8 @@
public:
typedef GarnetIntLinkParams Params;
GarnetIntLink(const Params *p);
+ const Params *params() const
+ { return dynamic_cast<const Params *>(_params); }
void init();
@@ -74,6 +76,8 @@
public:
typedef GarnetExtLinkParams Params;
GarnetExtLink(const Params *p);
+ const Params *params() const
+ { return dynamic_cast<const Params *>(_params); }
void init();
diff --git a/src/mem/ruby/network/garnet2.0/GarnetNetwork.cc
b/src/mem/ruby/network/garnet2.0/GarnetNetwork.cc
index 5fa7644..b3f6954 100644
--- a/src/mem/ruby/network/garnet2.0/GarnetNetwork.cc
+++ b/src/mem/ruby/network/garnet2.0/GarnetNetwork.cc
@@ -82,7 +82,7 @@
// record the routers
for (vector<BasicRouter*>::const_iterator i = p->routers.begin();
i != p->routers.end(); ++i) {
- Router* router = safe_cast<Router*>(*i);
+ Router* router = dynamic_cast<Router*>(*i);
m_routers.push_back(router);
// initialize the router's network pointers
@@ -92,7 +92,7 @@
// record the network interfaces
for (vector<ClockedObject*>::const_iterator i = p->netifs.begin();
i != p->netifs.end(); ++i) {
- NetworkInterface *ni = safe_cast<NetworkInterface *>(*i);
+ NetworkInterface *ni = dynamic_cast<NetworkInterface *>(*i);
m_nis.push_back(ni);
ni->init_net_ptr(this);
}
@@ -129,7 +129,7 @@
if (isFaultModelEnabled()) {
for (vector<Router*>::const_iterator i= m_routers.begin();
i != m_routers.end(); ++i) {
- Router* router = safe_cast<Router*>(*i);
+ Router* router = dynamic_cast<Router*>(*i);
int router_id M5_VAR_USED =
fault_model->declare_router(router->get_num_inports(),
router->get_num_outports(),
@@ -164,7 +164,7 @@
{
assert(src < m_nodes);
- GarnetExtLink* garnet_link = safe_cast<GarnetExtLink*>(link);
+ GarnetExtLink* garnet_link = dynamic_cast<GarnetExtLink*>(link);
// GarnetExtLink is bi-directional
NetworkLink* net_link = garnet_link->m_network_links[LinkDirection_In];
@@ -193,7 +193,7 @@
assert(src < m_routers.size());
assert(m_routers[src] != NULL);
- GarnetExtLink* garnet_link = safe_cast<GarnetExtLink*>(link);
+ GarnetExtLink* garnet_link = dynamic_cast<GarnetExtLink*>(link);
// GarnetExtLink is bi-directional
NetworkLink* net_link =
garnet_link->m_network_links[LinkDirection_Out];
@@ -221,7 +221,7 @@
PortDirection src_outport_dirn,
PortDirection dst_inport_dirn)
{
- GarnetIntLink* garnet_link = safe_cast<GarnetIntLink*>(link);
+ GarnetIntLink* garnet_link = dynamic_cast<GarnetIntLink*>(link);
// GarnetIntLink is unidirectional
NetworkLink* net_link = garnet_link->m_network_link;
diff --git a/src/mem/ruby/network/garnet2.0/NetworkLink.hh
b/src/mem/ruby/network/garnet2.0/NetworkLink.hh
index 98fb7b9..76c7bf7 100644
--- a/src/mem/ruby/network/garnet2.0/NetworkLink.hh
+++ b/src/mem/ruby/network/garnet2.0/NetworkLink.hh
@@ -72,7 +72,7 @@
uint32_t functionalWrite(Packet *);
void resetStats();
- private:
+ protected:
const int m_id;
link_type m_type;
const Cycles m_latency;
diff --git a/src/mem/ruby/network/simple/SimpleLink.hh
b/src/mem/ruby/network/simple/SimpleLink.hh
index 3ca2356..2970019 100644
--- a/src/mem/ruby/network/simple/SimpleLink.hh
+++ b/src/mem/ruby/network/simple/SimpleLink.hh
@@ -42,7 +42,8 @@
public:
typedef SimpleExtLinkParams Params;
SimpleExtLink(const Params *p);
- const Params *params() const { return (const Params *)_params; }
+ const Params *params() const
+ { return dynamic_cast<const Params *>(_params); }
friend class Topology;
void print(std::ostream& out) const;
@@ -63,7 +64,8 @@
public:
typedef SimpleIntLinkParams Params;
SimpleIntLink(const Params *p);
- const Params *params() const { return (const Params *)_params; }
+ const Params *params() const
+ { return dynamic_cast<const Params *>(_params); }
friend class Topology;
void print(std::ostream& out) const;
diff --git a/src/mem/ruby/network/simple/SimpleNetwork.cc
b/src/mem/ruby/network/simple/SimpleNetwork.cc
index 56f948f..3360a35 100644
--- a/src/mem/ruby/network/simple/SimpleNetwork.cc
+++ b/src/mem/ruby/network/simple/SimpleNetwork.cc
@@ -51,7 +51,7 @@
// record the routers
for (vector<BasicRouter*>::const_iterator i = p->routers.begin();
i != p->routers.end(); ++i) {
- Switch* s = safe_cast<Switch*>(*i);
+ Switch* s = dynamic_cast<Switch*>(*i);
m_switches.push_back(s);
s->init_net_ptr(this);
}
@@ -86,7 +86,7 @@
assert(src < m_switches.size());
assert(m_switches[src] != NULL);
- SimpleExtLink *simple_link = safe_cast<SimpleExtLink*>(link);
+ SimpleExtLink *simple_link = dynamic_cast<SimpleExtLink*>(link);
m_switches[src]->addOutPort(m_fromNetQueues[dest], routing_table_entry,
simple_link->m_latency,
@@ -121,7 +121,7 @@
}
// Connect it to the two switches
- SimpleIntLink *simple_link = safe_cast<SimpleIntLink*>(link);
+ SimpleIntLink *simple_link = dynamic_cast<SimpleIntLink*>(link);
m_switches[dest]->addInPort(queues);
m_switches[src]->addOutPort(queues, routing_table_entry,
diff --git a/src/mem/ruby/slicc_interface/AbstractController.hh
b/src/mem/ruby/slicc_interface/AbstractController.hh
index 5e39a28..cd77697 100644
--- a/src/mem/ruby/slicc_interface/AbstractController.hh
+++ b/src/mem/ruby/slicc_interface/AbstractController.hh
@@ -74,9 +74,13 @@
{
public:
typedef RubyControllerParams Params;
+
AbstractController(const Params *p);
+
void init();
- const Params *params() const { return (const Params *)_params; }
+
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
NodeID getVersion() const { return m_machineID.getNum(); }
MachineType getType() const { return m_machineID.getType(); }
diff --git a/src/sim/clocked_object.hh b/src/sim/clocked_object.hh
index b89e1ce..c26c14c 100644
--- a/src/sim/clocked_object.hh
+++ b/src/sim/clocked_object.hh
@@ -53,8 +53,8 @@
#include "base/intmath.hh"
#include "enums/PwrState.hh"
#include "params/ClockedObject.hh"
-#include "sim/core.hh"
#include "sim/clock_domain.hh"
+#include "sim/core.hh"
#include "sim/sim_object.hh"
/**
@@ -240,7 +240,7 @@
/** Parameters of ClockedObject */
typedef ClockedObjectParams Params;
const Params* params() const
- { return reinterpret_cast<const Params*>(_params); }
+ { return dynamic_cast<const Params *>(_params); }
void serialize(CheckpointOut &cp) const override;
void unserialize(CheckpointIn &cp) override;
diff --git a/src/sim/system.hh b/src/sim/system.hh
index 69448d3..1888613 100644
--- a/src/sim/system.hh
+++ b/src/sim/system.hh
@@ -553,19 +553,20 @@
std::vector<BaseRemoteGDB *> remoteGDB;
bool breakpoint();
- public:
- typedef SystemParams Params;
-
protected:
Params *_params;
public:
+ typedef SystemParams Params;
+
System(Params *p);
~System();
void initState() override;
- const Params *params() const { return (const Params *)_params; }
+ const Params * params() const
+ { return dynamic_cast<const Params *>(_params); }
+
public:
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/17609
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: Ic3664b37f55d0c0f0de95975190794a266c58350
Gerrit-Change-Number: 17609
Gerrit-PatchSet: 1
Gerrit-Owner: Ryan Gambord <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev