diff options
author | Andreas Sandberg <Andreas.Sandberg@arm.com> | 2012-11-02 11:32:02 -0500 |
---|---|---|
committer | Andreas Sandberg <Andreas.Sandberg@arm.com> | 2012-11-02 11:32:02 -0500 |
commit | 050f24c7964cbe65633261e431e1105d1d5e8070 (patch) | |
tree | e4d2b820be4e83087b0b21164f528f494b501ad9 /src/python | |
parent | aae6134b5487e02a90445d1b2146583740658b09 (diff) | |
download | gem5-050f24c7964cbe65633261e431e1105d1d5e8070.tar.xz |
sim: Add drain methods to request additional cleanup operations
This patch adds the following two methods to the Drainable base class:
memWriteback() - Write back all dirty cache lines to memory using
functional accesses.
memInvalidate() - Invalidate memory system buffers. Dirty data
won't be written back.
Specifying calling memWriteback() after draining will allow us to
checkpoint systems with caches. memInvalidate() can be used to drop
memory system buffers in preparation for switching to an accelerated
CPU model that bypasses the gem5 memory system (e.g., hardware
virtualized CPUs).
Note: This patch only adds the methods to Drainable, the code for
flushing the TLB and the cache is committed separately.
Diffstat (limited to 'src/python')
-rw-r--r-- | src/python/m5/simulate.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/python/m5/simulate.py b/src/python/m5/simulate.py index ca2cc4a9c..8ad273225 100644 --- a/src/python/m5/simulate.py +++ b/src/python/m5/simulate.py @@ -181,6 +181,14 @@ def drain(root): while (not all_drained): all_drained = _drain() +def memWriteback(root): + for obj in root.descendants(): + obj.memWriteback() + +def memInvalidate(root): + for obj in root.descendants(): + obj.memInvalidate() + def resume(root): for obj in root.descendants(): obj.drainResume() @@ -189,6 +197,7 @@ def checkpoint(dir): if not isinstance(root, objects.Root): raise TypeError, "Checkpoint must be called on a root object." drain(root) + memWriteback(root) print "Writing checkpoint" internal.core.serializeAll(dir) resume(root) |