diff options
-rw-r--r-- | src/arch/x86/pagetable.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/arch/x86/pagetable.cc b/src/arch/x86/pagetable.cc index bfd2efe61..40d5e0984 100644 --- a/src/arch/x86/pagetable.cc +++ b/src/arch/x86/pagetable.cc @@ -37,6 +37,7 @@ * Authors: Gabe Black */ +#include <cmath> #include "arch/x86/isa_traits.hh" #include "arch/x86/pagetable.hh" #include "sim/serialize.hh" @@ -69,14 +70,25 @@ TlbEntry::unserialize(Checkpoint *cp, const std::string §ion) { UNSERIALIZE_SCALAR(paddr); UNSERIALIZE_SCALAR(vaddr); - UNSERIALIZE_SCALAR(logBytes); + // + // The logBytes scalar variable replaced the previous size variable. + // The following code maintains backwards compatibility with previous + // checkpoints using the old size variable. + // + if (UNSERIALIZE_OPT_SCALAR(logBytes) == false) { + int size; + UNSERIALIZE_SCALAR(size); + logBytes = log2(size); + } UNSERIALIZE_SCALAR(writable); UNSERIALIZE_SCALAR(user); UNSERIALIZE_SCALAR(uncacheable); UNSERIALIZE_SCALAR(global); UNSERIALIZE_SCALAR(patBit); UNSERIALIZE_SCALAR(noExec); - UNSERIALIZE_SCALAR(lruSeq); + if (UNSERIALIZE_OPT_SCALAR(lruSeq) == false) { + lruSeq = 0; + } } } |