misc: Use PARAMS

The patch is using the newly defined PARAMS macro to replace
custom params() getters in derived class.

The patch is also removing redundant _params:
Instead of creating yet another _params field, SimObject descendants
should use params() to expose the real type of SimObject::_params they
already have.

Change-Id: I43394cebb9661fe747bdbb332236f0f0181b3dba
Signed-off-by: Alexander Klimov <Alexander.Klimov@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/39900
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Alexander Klimov
2021-01-26 08:21:53 +00:00
committed by Giacomo Travaglini
parent c8a2114df2
commit 92ba3ba843
120 changed files with 152 additions and 700 deletions

View File

@@ -55,12 +55,7 @@
class AmbaFake : public AmbaPioDevice
{
public:
typedef AmbaFakeParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(AmbaFake);
AmbaFake(const Params &p);
virtual Tick read(PacketPtr pkt);

View File

@@ -109,8 +109,7 @@ ArmPPIGen::get(ThreadContext* tc)
return pin_it->second;
} else {
// Generate PPI Pin
auto &p = static_cast<const ArmPPIParams &>(_params);
ArmPPI *pin = new ArmPPI(p, tc);
ArmPPI *pin = new ArmPPI(ArmPPIGen::params(), tc);
pins.insert({cid, pin});

View File

@@ -165,7 +165,8 @@ class ArmSPIGen : public ArmInterruptPinGen
class ArmPPIGen : public ArmInterruptPinGen
{
public:
ArmPPIGen(const ArmPPIParams &p);
PARAMS(ArmPPI);
ArmPPIGen(const Params &p);
ArmInterruptPin* get(ThreadContext* tc = nullptr) override;
protected:

View File

@@ -263,15 +263,10 @@ class Platform : public Scp
public:
using ProtocolList = std::unordered_map<uint8_t, Protocol *>;
Platform(const ScmiPlatformParams &p);
PARAMS(ScmiPlatform);
Platform(const Params &p);
~Platform();
const ScmiPlatformParams&
params() const
{
return static_cast<const ScmiPlatformParams&>(_params);
}
void handleMessage(AgentChannel *ch, Message &msg);
/** Returns the number of agents in the system */

View File

@@ -408,12 +408,6 @@ GenericTimer::GenericTimer(const GenericTimerParams &p)
system.setGenericTimer(this);
}
const GenericTimerParams &
GenericTimer::params() const
{
return dynamic_cast<const GenericTimerParams &>(_params);
}
void
GenericTimer::serialize(CheckpointOut &cp) const
{
@@ -469,7 +463,7 @@ void
GenericTimer::createTimers(unsigned cpus)
{
assert(timers.size() < cpus);
auto &p = static_cast<const GenericTimerParams &>(_params);
auto &p = params();
const unsigned old_cpu_count(timers.size());
timers.resize(cpus);

View File

@@ -286,9 +286,9 @@ class ArchTimerKvm : public ArchTimer
class GenericTimer : public SimObject
{
public:
const GenericTimerParams &params() const;
PARAMS(GenericTimer);
GenericTimer(const GenericTimerParams &p);
GenericTimer(const Params &p);
void serialize(CheckpointOut &cp) const override;
void unserialize(CheckpointIn &cp) override;

View File

@@ -475,12 +475,7 @@ class GicV2 : public BaseGic, public BaseGicRegisters
int pendingDelayedInterrupts;
public:
typedef GicV2Params Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(GicV2);
GicV2(const Params &p);
~GicV2();

View File

@@ -56,7 +56,6 @@ class Gicv3 : public BaseGic
friend class Gicv3CPUInterface;
friend class Gicv3Redistributor;
typedef Gicv3Params Params;
Gicv3Distributor * distributor;
std::vector<Gicv3Redistributor *> redistributors;
std::vector<Gicv3CPUInterface *> cpuInterfaces;
@@ -111,11 +110,7 @@ class Gicv3 : public BaseGic
void init() override;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(Gicv3);
Tick read(PacketPtr pkt) override;
void reset();

View File

@@ -356,13 +356,7 @@ class Pl111: public AmbaDmaDevice
bool enableCapture;
public:
typedef Pl111Params Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(Pl111);
Pl111(const Params &p);
~Pl111();

View File

@@ -63,11 +63,7 @@ class RealView : public Platform
BaseGic *gic;
public:
typedef RealViewParams Params;
const Params &
params() const {
return dynamic_cast<const Params &>(_params);
}
PARAMS(RealView);
/**
* Constructor for the Tsunami Class.

View File

@@ -97,12 +97,8 @@ class PL031 : public AmbaIntDevice
void resyncMatch();
public:
typedef PL031Params Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(PL031);
/**
* The constructor for RealView just registers itself with the MMU.
* @param p params structure
@@ -129,4 +125,3 @@ class PL031 : public AmbaIntDevice
#endif // __DEV_ARM_RTC_PL031_HH__

View File

@@ -153,12 +153,8 @@ class RealViewCtrl : public BasicPioDevice
uint32_t scData;
public:
typedef RealViewCtrlParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(RealViewCtrl);
/**
* The constructor for RealView just registers itself with the MMU.
* @param p params structure

View File

@@ -118,7 +118,8 @@ class SMMUv3DeviceInterface : public ClockedObject
Port& getPort(const std::string &name, PortID id) override;
public:
SMMUv3DeviceInterface(const SMMUv3DeviceInterfaceParams &p);
PARAMS(SMMUv3DeviceInterface);
SMMUv3DeviceInterface(const Params &p);
~SMMUv3DeviceInterface()
{
@@ -126,12 +127,6 @@ class SMMUv3DeviceInterface : public ClockedObject
delete mainTLB;
}
const SMMUv3DeviceInterfaceParams &
params() const
{
return static_cast<const SMMUv3DeviceInterfaceParams &>(_params);
}
DrainState drain() override;
void setSMMU(SMMUv3 *_smmu) { smmu = _smmu; }

View File

@@ -149,12 +149,8 @@ class A9GlobalTimer : public BasicPioDevice
Timer global_timer;
public:
typedef A9GlobalTimerParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(A9GlobalTimer);
/**
* The constructor for RealView just registers itself with the MMU.
* @param p params structure

View File

@@ -162,12 +162,8 @@ class CpuLocalTimer : public BasicPioDevice
std::vector<std::unique_ptr<Timer>> localTimer;
public:
typedef CpuLocalTimerParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(CpuLocalTimer);
/**
* The constructor for RealView just registers itself with the MMU.
* @param p params structure

View File

@@ -135,12 +135,8 @@ class Sp804 : public AmbaPioDevice
Timer timer1;
public:
typedef Sp804Params Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(Sp804);
/**
* The constructor for RealView just registers itself with the MMU.
* @param p params structure

View File

@@ -186,12 +186,7 @@ class VGic : public PioDevice
struct std::array<vcpuIntData, VGIC_CPU_MAX> vcpuData;
public:
typedef VGicParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(VGic);
VGic(const Params &p);
~VGic();

View File

@@ -49,21 +49,13 @@ class BadDevice : public BasicPioDevice
std::string devname;
public:
typedef BadDeviceParams Params;
PARAMS(BadDevice);
protected:
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
public:
/**
* Constructor for the Baddev Class.
* @param p object parameters
* @param a base address of the write
*/
/**
* Constructor for the Baddev Class.
* @param p object parameters
* @param a base address of the write
*/
BadDevice(const Params &p);
virtual Tick read(PacketPtr pkt);

View File

@@ -128,16 +128,10 @@ class PioDevice : public ClockedObject
virtual Tick write(PacketPtr pkt) = 0;
public:
typedef PioDeviceParams Params;
PARAMS(PioDevice);
PioDevice(const Params &p);
virtual ~PioDevice();
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
void init() override;
Port &getPort(const std::string &if_name,
@@ -160,15 +154,9 @@ class BasicPioDevice : public PioDevice
Tick pioDelay;
public:
typedef BasicPioDeviceParams Params;
PARAMS(BasicPioDevice);
BasicPioDevice(const Params &p, Addr size);
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
/**
* Determine the address ranges that this device responds to.
*

View File

@@ -55,12 +55,8 @@ class IsaFake : public BasicPioDevice
uint64_t retData64;
public:
typedef IsaFakeParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(IsaFake);
/**
* The constructor for Isa Fake just registers itself with the MMU.
* @param p params structure

View File

@@ -76,13 +76,7 @@ class MaltaCChip : public BasicPioDevice
//uint64_t itint;
public:
typedef MaltaCChipParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(MaltaCChip);
/**
* Initialize the Malta CChip by setting all of the

View File

@@ -102,13 +102,7 @@ class MaltaIO : public BasicPioDevice
*/
Tick frequency() const;
typedef MaltaIOParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(MaltaIO);
/**
* Initialize all the data for devices supported by Malta I/O.

View File

@@ -215,16 +215,10 @@ class DistEtherLink : public SimObject
Tick linkDelay;
public:
typedef DistEtherLinkParams Params;
PARAMS(DistEtherLink);
DistEtherLink(const Params &p);
~DistEtherLink();
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
Port &getPort(const std::string &if_name,
PortID idx=InvalidPortID) override;

View File

@@ -55,16 +55,10 @@ class EtherBus : public SimObject
EtherDump *dump;
public:
typedef EtherBusParams Params;
PARAMS(EtherBus);
EtherBus(const Params &p);
virtual ~EtherBus() {}
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
void txDone();
void reg(EtherInt *dev);
bool busy() const { return (bool)packet; }

View File

@@ -45,18 +45,12 @@ class EtherInt;
class EtherDevice : public PciDevice
{
public:
typedef EtherDeviceParams Params;
PARAMS(EtherDevice);
EtherDevice(const Params &params)
: PciDevice(params),
etherDeviceStats(this)
{}
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
protected:
struct EtherDeviceStats : public Stats::Group
{
@@ -146,16 +140,10 @@ class EtherDevice : public PciDevice
class EtherDevBase : public EtherDevice
{
public:
EtherDevBase(const EtherDevBaseParams &params)
PARAMS(EtherDevBase);
EtherDevBase(const Params &params)
: EtherDevice(params)
{}
const EtherDevBaseParams &
params() const
{
return dynamic_cast<const EtherDevBaseParams &>(_params);
}
};
#endif // __DEV_NET_ETHERDEVICE_HH__

View File

@@ -140,16 +140,10 @@ class EtherLink : public SimObject
Interface *interface[2];
public:
typedef EtherLinkParams Params;
PARAMS(EtherLink);
EtherLink(const Params &p);
virtual ~EtherLink();
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
Port &getPort(const std::string &if_name,
PortID idx=InvalidPortID) override;

View File

@@ -51,17 +51,11 @@
class EtherSwitch : public SimObject
{
public:
typedef EtherSwitchParams Params;
PARAMS(EtherSwitch);
EtherSwitch(const Params &p);
~EtherSwitch();
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
Port &getPort(const std::string &if_name,
PortID idx=InvalidPortID) override;

View File

@@ -56,16 +56,10 @@ class EtherTapInt;
class EtherTapBase : public SimObject
{
public:
typedef EtherTapBaseParams Params;
PARAMS(EtherTapBase);
EtherTapBase(const Params &p);
virtual ~EtherTapBase();
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
void serialize(CheckpointOut &cp) const override;
void unserialize(CheckpointIn &cp) override;
@@ -136,16 +130,10 @@ class TapListener;
class EtherTapStub : public EtherTapBase
{
public:
typedef EtherTapStubParams Params;
PARAMS(EtherTapStub);
EtherTapStub(const Params &p);
~EtherTapStub();
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
void serialize(CheckpointOut &cp) const override;
void unserialize(CheckpointIn &cp) override;
@@ -171,16 +159,10 @@ class EtherTapStub : public EtherTapBase
class EtherTap : public EtherTapBase
{
public:
typedef EtherTapParams Params;
PARAMS(EtherTap);
EtherTap(const Params &p);
~EtherTap();
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
protected:
int tap;

View File

@@ -473,12 +473,7 @@ class IGbE : public EtherDevice
TxDescCache txDescCache;
public:
typedef IGbEParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(IGbE);
IGbE(const Params &params);
~IGbE();

View File

@@ -326,12 +326,7 @@ class NSGigE : public EtherDevBase
NSGigEInt *interface;
public:
typedef NSGigEParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(NSGigE);
NSGigE(const Params &params);
~NSGigE();

View File

@@ -76,8 +76,7 @@ class Base : public EtherDevBase
* Construction/Destruction/Parameters
*/
public:
typedef SinicParams Params;
const Params &params() const { return (const Params &)_params; }
PARAMS(Sinic);
Base(const Params &p);
};

View File

@@ -154,12 +154,7 @@ class CopyEngine : public PciDevice
std::vector<CopyEngineChannel*> chan;
public:
typedef CopyEngineParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(CopyEngine);
CopyEngine(const Params &params);
~CopyEngine();

View File

@@ -51,15 +51,9 @@ class Uart : public BasicPioDevice
SerialDevice *device;
public:
typedef UartParams Params;
PARAMS(Uart);
Uart(const Params &p, Addr pio_size);
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
/**
* Inform the uart that there is data available.
*/

View File

@@ -209,12 +209,7 @@ class Uart8250 : public Uart
EventFunctionWrapper rxIntrEvent;
public:
typedef Uart8250Params Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(Uart8250);
Uart8250(const Params &p);
Tick read(PacketPtr pkt) override;

View File

@@ -49,15 +49,9 @@ class DumbTOD : public BasicPioDevice
uint64_t todTime;
public:
typedef DumbTODParams Params;
PARAMS(DumbTOD);
DumbTOD(const Params &p);
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
Tick read(PacketPtr pkt) override;
Tick write(PacketPtr pkt) override;

View File

@@ -121,15 +121,9 @@ class Iob : public PioDevice
void readJBus(PacketPtr pkt);
public:
typedef IobParams Params;
PARAMS(Iob);
Iob(const Params &p);
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
Tick read(PacketPtr pkt) override;
Tick write(PacketPtr pkt) override;
void generateIpi(Type type, int cpu_id, int vector);

View File

@@ -47,15 +47,9 @@ class MmDisk : public BasicPioDevice
uint8_t diskData[SectorSize];
public:
typedef MmDiskParams Params;
PARAMS(MmDisk);
MmDisk(const Params &p);
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
Tick read(PacketPtr pkt) override;
Tick write(PacketPtr pkt) override;

View File

@@ -164,8 +164,7 @@ class IdeController : public PciDevice
void dispatchAccess(PacketPtr pkt, bool read);
public:
typedef IdeControllerParams Params;
const Params &params() const { return (const Params &)_params; }
PARAMS(IdeController);
IdeController(const Params &p);
/** See if a disk is selected based on its pointer */

View File

@@ -117,13 +117,7 @@ class I8042 : public BasicPioDevice
uint8_t readDataOut();
public:
typedef I8042Params Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(I8042);
I8042(const Params &p);

View File

@@ -85,13 +85,7 @@ class I82094AA : public BasicPioDevice
IntRequestPort<I82094AA> intRequestPort;
public:
typedef I82094AAParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(I82094AA);
I82094AA(const Params &p);

View File

@@ -92,13 +92,7 @@ class I8237 : public BasicPioDevice
void setMaskBit(Register &reg, const uint8_t &command);
public:
typedef I8237Params Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(I8237);
I8237(const Params &p);

View File

@@ -66,7 +66,7 @@ class I8254 : public BasicPioDevice
void counterInterrupt(unsigned int num);
public:
typedef I8254Params Params;
PARAMS(I8254);
Port &
getPort(const std::string &if_name, PortID idx=InvalidPortID) override
@@ -77,12 +77,6 @@ class I8254 : public BasicPioDevice
return BasicPioDevice::getPort(if_name, idx);
}
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
I8254(const Params &p) : BasicPioDevice(p, 4), latency(p.pio_latency),
pit(p.name, this)
{

View File

@@ -81,13 +81,7 @@ class I8259 : public BasicPioDevice
void handleEOI(int line);
public:
typedef I8259Params Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(I8259);
I8259(const Params &p);

View File

@@ -55,14 +55,8 @@ class SouthBridge : public SimObject
X86ISA::I82094AA * ioApic;
public:
typedef SouthBridgeParams Params;
PARAMS(SouthBridge);
SouthBridge(const Params &p);
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
};
#endif //__DEV_X86_SOUTH_BRIDGE_HH__

View File

@@ -54,13 +54,7 @@ class Speaker : public BasicPioDevice
I8254 * timer;
public:
typedef PcSpeakerParams Params;
const Params &
params() const
{
return dynamic_cast<const Params &>(_params);
}
PARAMS(PcSpeaker);
Speaker(const Params &p) : BasicPioDevice(p, 1),
latency(p.pio_latency), controlVal(0), timer(p.i8254)