sim, arm: add checkpoint upgrader for d02b45a5

The insertion of CONTEXTIDR_EL2 in the ARM miscellaneous registers
obsoletes old checkpoints.
This commit is contained in:
Curtis Dunham 2015-06-01 18:05:11 -05:00
parent 7c4eb3b4d8
commit 31825bd988
2 changed files with 14 additions and 1 deletions

View file

@ -59,7 +59,7 @@ class EventQueue;
* SimObject shouldn't cause the version number to increase, only changes to * SimObject shouldn't cause the version number to increase, only changes to
* existing objects such as serializing/unserializing more state, changing sizes * existing objects such as serializing/unserializing more state, changing sizes
* of serialized arrays, etc. */ * of serialized arrays, etc. */
static const uint64_t gem5CheckpointVersion = 0x000000000000000d; static const uint64_t gem5CheckpointVersion = 0x000000000000000e;
template <class T> template <class T>
void paramOut(std::ostream &os, const std::string &name, const T &param); void paramOut(std::ostream &os, const std::string &name, const T &param);

View file

@ -602,6 +602,18 @@ def from_C(cpt):
cpt.set(sec, 'intRegs', ' '.join(intRegs)) cpt.set(sec, 'intRegs', ' '.join(intRegs))
cpt.set(sec, 'ccRegs', ' '.join(ccRegs)) cpt.set(sec, 'ccRegs', ' '.join(ccRegs))
# Checkpoint version E adds the ARM CONTEXTIDR_EL2 miscreg.
def from_D(cpt):
if cpt.get('root','isa') == 'arm':
for sec in cpt.sections():
import re
# Search for all ISA sections
if re.search('.*sys.*\.cpu.*\.isa$', sec):
miscRegs = cpt.get(sec, 'miscRegs').split()
# CONTEXTIDR_EL2 defaults to 0b11111100000000000001
miscRegs[599:599] = [0xFC001]
cpt.set(sec, 'miscRegs', ' '.join(str(x) for x in miscRegs))
migrations = [] migrations = []
migrations.append(from_0) migrations.append(from_0)
migrations.append(from_1) migrations.append(from_1)
@ -616,6 +628,7 @@ migrations.append(from_9)
migrations.append(from_A) migrations.append(from_A)
migrations.append(from_B) migrations.append(from_B)
migrations.append(from_C) migrations.append(from_C)
migrations.append(from_D)
verbose_print = False verbose_print = False