* This implements the dual Sp804 timer block
*/
-class Gic;
+class BaseGic;
-class Sp804 : public AmbaDevice
+class Sp804 : public AmbaPioDevice
{
protected:
- class Timer
+ class Timer : public Serializable
{
public:
Sp804 *parent;
/** Number of interrupt to cause/clear */
- uint32_t intNum;
+ const uint32_t intNum;
/** Number of ticks in a clock input */
- Tick clock;
+ const Tick clock;
/** Control register as specified above */
CTRL control;
/** Called when the counter reaches 0 */
void counterAtZero();
- EventWrapper<Timer, &Timer::counterAtZero> zeroEvent;
+ EventFunctionWrapper zeroEvent;
public:
/** Restart the counter ticking at val
/** Handle write for a single timer */
void write(PacketPtr pkt, Addr daddr);
- void serialize(std::ostream &os);
- void unserialize(Checkpoint *cp, const std::string §ion);
-
+ void serialize(CheckpointOut &cp) const override;
+ void unserialize(CheckpointIn &cp) override;
};
/** Pointer to the GIC for causing an interrupt */
- Gic *gic;
+ BaseGic *gic;
/** Timers that do the actual work */
Timer timer0;
* @param pkt The memory request.
* @param data Where to put the data.
*/
- virtual Tick read(PacketPtr pkt);
+ Tick read(PacketPtr pkt) override;
/**
* All writes are simply ignored.
* @param pkt The memory request.
* @param data the data
*/
- virtual Tick write(PacketPtr pkt);
+ Tick write(PacketPtr pkt) override;
- virtual void serialize(std::ostream &os);
- virtual void unserialize(Checkpoint *cp, const std::string §ion);
+ void serialize(CheckpointOut &cp) const override;
+ void unserialize(CheckpointIn &cp) override;
};