diff options
author | Curtis Dunham <Curtis.Dunham@arm.com> | 2017-05-18 21:18:48 +0000 |
---|---|---|
committer | Andreas Sandberg <andreas.sandberg@arm.com> | 2017-07-05 14:24:03 +0000 |
commit | e2a049e089b4878d6abd8e816973b175e2be2d7c (patch) | |
tree | 196ca2952e623920c1d8da558b8fef3a4c0e5784 /src/dev/arm/generic_timer.hh | |
parent | b829b4a8e4ef82345cf81d442dbc6c67016fde98 (diff) | |
download | gem5-e2a049e089b4878d6abd8e816973b175e2be2d7c.tar.xz |
dev,arm: remove and recreate timer events around drains
Having timer events stored in checkpoints complicates Kvm
execution. We change the timer behavior so that it always
deschedules any pending events on a drain() and recreates
them on a drainResume(), thus they will never appear in
checkpoints henceforth. This pattern of behavior makes
it simpler to handle Kvm execution, where the hardware
performs the timer function directly.
Change-Id: Ia218868c69350d96e923c640634d492b5c19cd3f
Reviewed-on: https://gem5-review.googlesource.com/3541
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/dev/arm/generic_timer.hh')
-rw-r--r-- | src/dev/arm/generic_timer.hh | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/dev/arm/generic_timer.hh b/src/dev/arm/generic_timer.hh index 3a3895489..3eec1d42e 100644 --- a/src/dev/arm/generic_timer.hh +++ b/src/dev/arm/generic_timer.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2015 ARM Limited + * Copyright (c) 2013, 2015, 2017 ARM Limited * All rights reserved. * * The license below extends only to copyright in the software and shall @@ -102,7 +102,7 @@ class SystemCounter : public Serializable }; /// Per-CPU architected timer. -class ArchTimer : public Serializable +class ArchTimer : public Serializable, public Drainable { public: class Interrupt @@ -188,9 +188,14 @@ class ArchTimer : public Serializable /// Returns the value of the counter which this timer relies on. uint64_t value() const; + // Serializable void serialize(CheckpointOut &cp) const override; void unserialize(CheckpointIn &cp) override; + // Drainable + DrainState drain() override; + void drainResume() override; + private: // Disable copying ArchTimer(const ArchTimer &t); |