summaryrefslogtreecommitdiff
path: root/src/sim/drain.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim/drain.hh')
-rw-r--r--src/sim/drain.hh23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/sim/drain.hh b/src/sim/drain.hh
index 252022bc7..2f5d2d965 100644
--- a/src/sim/drain.hh
+++ b/src/sim/drain.hh
@@ -202,6 +202,29 @@ class Drainable
*/
virtual void drainResume();
+ /**
+ * Write back dirty buffers to memory using functional writes.
+ *
+ * After returning, an object implementing this method should have
+ * written all its dirty data back to memory. This method is
+ * typically used to prepare a system with caches for
+ * checkpointing.
+ */
+ virtual void memWriteback() {};
+
+ /**
+ * Invalidate the contents of memory buffers.
+ *
+ * When the switching to hardware virtualized CPU models, we need
+ * to make sure that we don't have any cached state in the system
+ * that might become stale when we return. This method is used to
+ * flush all such state back to main memory.
+ *
+ * @warn This does <i>not</i> cause any dirty state to be written
+ * back to memory.
+ */
+ virtual void memInvalidate() {};
+
State getDrainState() const { return _drainState; }
protected: