arm: Don't checkpoint the SystemCounter's "_period" value.
authorGabe Black <gabeblack@google.com>
Wed, 15 Jan 2020 02:19:18 +0000 (18:19 -0800)
committerGabe Black <gabeblack@google.com>
Thu, 13 Feb 2020 19:40:36 +0000 (19:40 +0000)
This value is just a cached inverse of _freq and can be recalculated
easily once the checkpoint is restored. The actual value of _period
actually depends on the global resolution of time (ie how much time a
Tick represents), and so saving the value of _period is also not
technically correct, even though in practice that will very rarely
cause a problem.

Change-Id: I21e63ba25ac4e189417905e532981f3d80723f19
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24390
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/dev/arm/generic_timer.cc

index 7c1f09addffa24e6950b5595430a4231921c50e8..3df87681ec46ec071ee40eb257afba33f8ae454c 100644 (file)
@@ -83,7 +83,6 @@ SystemCounter::serialize(CheckpointOut &cp) const
     SERIALIZE_SCALAR(_regCntkctl);
     SERIALIZE_SCALAR(_regCnthctl);
     SERIALIZE_SCALAR(_freq);
-    SERIALIZE_SCALAR(_period);
     SERIALIZE_SCALAR(_resetTick);
 }
 
@@ -97,7 +96,7 @@ SystemCounter::unserialize(CheckpointIn &cp)
     if (!UNSERIALIZE_OPT_SCALAR(_regCnthctl))
         _regCnthctl = 0;
     UNSERIALIZE_SCALAR(_freq);
-    UNSERIALIZE_SCALAR(_period);
+    _period = (1.0 / _freq) * SimClock::Frequency;
     UNSERIALIZE_SCALAR(_resetTick);
 }