diff options
author | Andreas Hansson <andreas.hansson@arm.com> | 2012-10-15 08:12:29 -0400 |
---|---|---|
committer | Andreas Hansson <andreas.hansson@arm.com> | 2012-10-15 08:12:29 -0400 |
commit | d7ad8dc608dd6de4ff9c930de79edcdc3bdf8d40 (patch) | |
tree | ade28cbaf338c105085fc9573356ff722354a720 /src/arch/alpha | |
parent | 0c58106b6e27445e259d82bb13e2a5b6ae991bb6 (diff) | |
download | gem5-d7ad8dc608dd6de4ff9c930de79edcdc3bdf8d40.tar.xz |
Checkpoint: Make system serialize call children
This patch changes how the serialization of the system works. The base
class had a non-virtual serialize and unserialize, that was hidden by
a function with the same name for a number of subclasses (most likely
not intentional as the base class should have been virtual). A few of
the derived systems had no specialization at all (e.g. Power and x86
that simply called the System::serialize), but MIPS and Alpha adds
additional symbol table entries to the checkpoint.
Instead of overriding the virtual function, the additional entries are
now printed through a virtual function (un)serializeSymtab. The reason
for not calling System::serialize from the two related systems is that
a follow up patch will require the system to also serialize the
PhysicalMemory, and if this is done in the base class if ends up being
between the general parts and the specialized symbol table.
With this patch, the checkpoint is not modified, as the order of the
segments is unchanged.
Diffstat (limited to 'src/arch/alpha')
-rw-r--r-- | src/arch/alpha/system.cc | 6 | ||||
-rw-r--r-- | src/arch/alpha/system.hh | 4 |
2 files changed, 4 insertions, 6 deletions
diff --git a/src/arch/alpha/system.cc b/src/arch/alpha/system.cc index ca3c2b078..f8e65015a 100644 --- a/src/arch/alpha/system.cc +++ b/src/arch/alpha/system.cc @@ -218,17 +218,15 @@ AlphaSystem::setAlphaAccess(Addr access) } void -AlphaSystem::serialize(std::ostream &os) +AlphaSystem::serializeSymtab(std::ostream &os) { - System::serialize(os); consoleSymtab->serialize("console_symtab", os); palSymtab->serialize("pal_symtab", os); } void -AlphaSystem::unserialize(Checkpoint *cp, const std::string §ion) +AlphaSystem::unserializeSymtab(Checkpoint *cp, const std::string §ion) { - System::unserialize(cp,section); consoleSymtab->unserialize("console_symtab", cp, section); palSymtab->unserialize("pal_symtab", cp, section); } diff --git a/src/arch/alpha/system.hh b/src/arch/alpha/system.hh index 024d8bb47..bbf281c39 100644 --- a/src/arch/alpha/system.hh +++ b/src/arch/alpha/system.hh @@ -59,8 +59,8 @@ class AlphaSystem : public System /** * Serialization stuff */ - virtual void serialize(std::ostream &os); - virtual void unserialize(Checkpoint *cp, const std::string §ion); + virtual void serializeSymtab(std::ostream &os); + virtual void unserializeSymtab(Checkpoint *cp, const std::string §ion); /** Override startup() to provide a path to call setupFuncEvents() */ |