2c2
< * Copyright (c) 2015-2016 ARM Limited
---
> * Copyright (c) 2015-2017 ARM Limited
37a38
> * Curtis Dunham
46a48
> #include "dev/arm/gic_pl390.hh"
207a210,252
> struct MuxingKvmGicParams;
>
> class MuxingKvmGic : public Pl390
> {
> public: // SimObject / Serializable / Drainable
> MuxingKvmGic(const MuxingKvmGicParams *p);
> ~MuxingKvmGic();
>
> void startup() override;
> void drainResume() override;
>
> void serialize(CheckpointOut &cp) const override;
> void unserialize(CheckpointIn &cp) override;
>
> public: // PioDevice
> Tick read(PacketPtr pkt) override;
> Tick write(PacketPtr pkt) override;
>
> public: // Pl390
> void sendInt(uint32_t num) override;
> void clearInt(uint32_t num) override;
>
> void sendPPInt(uint32_t num, uint32_t cpu) override;
> void clearPPInt(uint32_t num, uint32_t cpu) override;
>
> protected:
> /** Verify gem5 configuration will support KVM emulation */
> bool validKvmEnvironment() const;
>
> /** System this interrupt controller belongs to */
> System &system;
>
> /** Kernel GIC device */
> KvmKernelGicV2 *kernelGic;
>
> private:
> bool usingKvm;
>
> /** Multiplexing implementation: state transfer functions */
> void fromPl390ToKvm();
> void fromKvmToPl390();
> };
>