summaryrefslogtreecommitdiff
path: root/src/dev
diff options
context:
space:
mode:
authorCurtis Dunham <Curtis.Dunham@arm.com>2017-01-27 20:21:59 +0000
committerAndreas Sandberg <andreas.sandberg@arm.com>2017-04-03 16:51:46 +0000
commit567a9b0a085d79c6bc9128204946cd6155960a9f (patch)
tree98f7c28fe491614659d2ac627bd64d935d99b5ca /src/dev
parent60075068ea6340e89a4b0cd4bd79c6ee3de44893 (diff)
downloadgem5-567a9b0a085d79c6bc9128204946cd6155960a9f.tar.xz
arm, kvm: implement GIC state transfer
This also allows checkpointing of a Kvm GIC via the Pl390 model. Change-Id: Ic85d81cfefad630617491b732398f5e6a5f34c0b Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/2444 Maintainer: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Weiping Liao <weipingliao@google.com>
Diffstat (limited to 'src/dev')
-rw-r--r--src/dev/arm/base_gic.hh13
-rw-r--r--src/dev/arm/gic_pl390.hh20
2 files changed, 26 insertions, 7 deletions
diff --git a/src/dev/arm/base_gic.hh b/src/dev/arm/base_gic.hh
index facc99084..cd16c0362 100644
--- a/src/dev/arm/base_gic.hh
+++ b/src/dev/arm/base_gic.hh
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2012-2013 ARM Limited
+ * Copyright (c) 2012-2013, 2017 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -92,4 +92,15 @@ class BaseGic : public PioDevice
Platform *platform;
};
+class BaseGicRegisters
+{
+ public:
+ virtual uint32_t readDistributor(ContextID ctx, Addr daddr) = 0;
+ virtual uint32_t readCpu(ContextID ctx, Addr daddr) = 0;
+
+ virtual void writeDistributor(ContextID ctx, Addr daddr,
+ uint32_t data) = 0;
+ virtual void writeCpu(ContextID ctx, Addr daddr, uint32_t data) = 0;
+};
+
#endif
diff --git a/src/dev/arm/gic_pl390.hh b/src/dev/arm/gic_pl390.hh
index 8beb5e2d5..6f819bf65 100644
--- a/src/dev/arm/gic_pl390.hh
+++ b/src/dev/arm/gic_pl390.hh
@@ -58,7 +58,7 @@
#include "dev/platform.hh"
#include "params/Pl390.hh"
-class Pl390 : public BaseGic
+class Pl390 : public BaseGic, public BaseGicRegisters
{
protected:
// distributor memory addresses
@@ -404,26 +404,34 @@ class Pl390 : public BaseGic
* @param pkt packet to respond to
*/
Tick readDistributor(PacketPtr pkt);
- uint32_t readDistributor(ContextID ctx, Addr daddr, size_t resp_sz);
+ uint32_t readDistributor(ContextID ctx, Addr daddr,
+ size_t resp_sz);
+ uint32_t readDistributor(ContextID ctx, Addr daddr) override {
+ return readDistributor(ctx, daddr, 4);
+ }
/** Handle a read to the cpu portion of the GIC
* @param pkt packet to respond to
*/
Tick readCpu(PacketPtr pkt);
- uint32_t readCpu(ContextID ctx, Addr daddr);
+ uint32_t readCpu(ContextID ctx, Addr daddr) override;
/** Handle a write to the distributor portion of the GIC
* @param pkt packet to respond to
*/
Tick writeDistributor(PacketPtr pkt);
- void writeDistributor(ContextID ctx, Addr daddr, uint32_t data,
- size_t data_sz);
+ void writeDistributor(ContextID ctx, Addr daddr,
+ uint32_t data, size_t data_sz);
+ void writeDistributor(ContextID ctx, Addr daddr,
+ uint32_t data) override {
+ return writeDistributor(ctx, daddr, data, 4);
+ }
/** Handle a write to the cpu portion of the GIC
* @param pkt packet to respond to
*/
Tick writeCpu(PacketPtr pkt);
- void writeCpu(ContextID ctx, Addr daddr, uint32_t data);
+ void writeCpu(ContextID ctx, Addr daddr, uint32_t data) override;
};
#endif //__DEV_ARM_GIC_H__