diff -r bf83c9f5d8c0 -r 91a1a4ae5d9a src/arch/alpha/system.hh --- a/src/arch/alpha/system.hh Fri Oct 12 09:43:50 2012 +0100 +++ b/src/arch/alpha/system.hh Fri Oct 12 09:48:47 2012 +0100 @@ -59,8 +59,8 @@ /** * 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() */ diff -r bf83c9f5d8c0 -r 91a1a4ae5d9a src/arch/alpha/system.cc --- a/src/arch/alpha/system.cc Fri Oct 12 09:43:50 2012 +0100 +++ b/src/arch/alpha/system.cc Fri Oct 12 09:48:47 2012 +0100 @@ -218,17 +218,15 @@ } 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 -r bf83c9f5d8c0 -r 91a1a4ae5d9a src/arch/mips/system.hh --- a/src/arch/mips/system.hh Fri Oct 12 09:43:50 2012 +0100 +++ b/src/arch/mips/system.hh Fri Oct 12 09:48:47 2012 +0100 @@ -55,11 +55,6 @@ virtual bool breakpoint(); public: - /** - * Serialization stuff - */ - virtual void serialize(std::ostream &os); - virtual void unserialize(Checkpoint *cp, const std::string §ion); /** * Set the m5MipsAccess pointer in the console diff -r bf83c9f5d8c0 -r 91a1a4ae5d9a src/arch/mips/system.cc --- a/src/arch/mips/system.cc Fri Oct 12 09:43:50 2012 +0100 +++ b/src/arch/mips/system.cc Fri Oct 12 09:48:47 2012 +0100 @@ -67,19 +67,6 @@ return 0; } -void -MipsSystem::serialize(std::ostream &os) -{ - System::serialize(os); -} - - -void -MipsSystem::unserialize(Checkpoint *cp, const std::string §ion) -{ - System::unserialize(cp,section); -} - MipsSystem * MipsSystemParams::create() { diff -r bf83c9f5d8c0 -r 91a1a4ae5d9a src/arch/sparc/system.hh --- a/src/arch/sparc/system.hh Fri Oct 12 09:43:50 2012 +0100 +++ b/src/arch/sparc/system.hh Fri Oct 12 09:48:47 2012 +0100 @@ -54,8 +54,8 @@ * Serialization stuff */ public: - 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); /** reset binary symbol table */ SymbolTable *resetSymtab; diff -r bf83c9f5d8c0 -r 91a1a4ae5d9a src/arch/sparc/system.cc --- a/src/arch/sparc/system.cc Fri Oct 12 09:43:50 2012 +0100 +++ b/src/arch/sparc/system.cc Fri Oct 12 09:48:47 2012 +0100 @@ -177,9 +177,8 @@ } void -SparcSystem::serialize(std::ostream &os) +SparcSystem::serializeSymtab(std::ostream &os) { - System::serialize(os); resetSymtab->serialize("reset_symtab", os); hypervisorSymtab->serialize("hypervisor_symtab", os); openbootSymtab->serialize("openboot_symtab", os); @@ -190,9 +189,8 @@ void -SparcSystem::unserialize(Checkpoint *cp, const std::string §ion) +SparcSystem::unserializeSymtab(Checkpoint *cp, const std::string §ion) { - System::unserialize(cp,section); resetSymtab->unserialize("reset_symtab", cp, section); hypervisorSymtab->unserialize("hypervisor_symtab", cp, section); openbootSymtab->unserialize("openboot_symtab", cp, section); diff -r bf83c9f5d8c0 -r 91a1a4ae5d9a src/arch/x86/system.hh --- a/src/arch/x86/system.hh Fri Oct 12 09:43:50 2012 +0100 +++ b/src/arch/x86/system.hh Fri Oct 12 09:48:47 2012 +0100 @@ -74,8 +74,6 @@ * Serialization stuff */ public: - void serialize(std::ostream &os); - void unserialize(Checkpoint *cp, const std::string §ion); void initState(); diff -r bf83c9f5d8c0 -r 91a1a4ae5d9a src/arch/x86/system.cc --- a/src/arch/x86/system.cc Fri Oct 12 09:43:50 2012 +0100 +++ b/src/arch/x86/system.cc Fri Oct 12 09:48:47 2012 +0100 @@ -388,19 +388,6 @@ delete smbiosTable; } -void -X86System::serialize(std::ostream &os) -{ - System::serialize(os); -} - - -void -X86System::unserialize(Checkpoint *cp, const std::string §ion) -{ - System::unserialize(cp,section); -} - X86System * X86SystemParams::create() { diff -r bf83c9f5d8c0 -r 91a1a4ae5d9a src/sim/system.hh --- a/src/sim/system.hh Fri Oct 12 09:43:50 2012 +0100 +++ b/src/sim/system.hh Fri Oct 12 09:48:47 2012 +0100 @@ -403,6 +403,26 @@ // For futex system call std::map * > futexMap; + protected: + + /** + * If needed, serialize additional symbol table entries for a + * specific subclass of this sytem. Currently this is used by + * Alpha and MIPS. + * + * @param os stream to serialize to + */ + virtual void serializeSymtab(std::ostream &os) {} + + /** + * If needed, unserialize additional symbol table entries for a + * specific subclass of this system. + * + * @param cp checkpoint to unserialize from + * @param section relevant section in the checkpoint + */ + virtual void unserializeSymtab(Checkpoint *cp, + const std::string §ion) {} }; diff -r bf83c9f5d8c0 -r 91a1a4ae5d9a src/sim/system.cc --- a/src/sim/system.cc Fri Oct 12 09:43:50 2012 +0100 +++ b/src/sim/system.cc Fri Oct 12 09:48:47 2012 +0100 @@ -341,6 +341,7 @@ kernelSymtab->serialize("kernel_symtab", os); SERIALIZE_SCALAR(pagePtr); SERIALIZE_SCALAR(nextPID); + serializeSymtab(os); } @@ -351,6 +352,7 @@ kernelSymtab->unserialize("kernel_symtab", cp, section); UNSERIALIZE_SCALAR(pagePtr); UNSERIALIZE_SCALAR(nextPID); + unserializeSymtab(cp, section); } void