From: Ali Saidi Date: Tue, 20 Nov 2007 03:47:08 +0000 (-0500) Subject: Serialization: Serialize SPARC PTEs last so their nameOut() calls don't interfere... X-Git-Tag: m5_2.0_beta5~77^2~1 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ac50694d1acb87a6537f8c34637f412680201e50;p=gem5.git Serialization: Serialize SPARC PTEs last so their nameOut() calls don't interfere with other serialization in the TLB. --HG-- extra : convert_revision : 8a8478a200cd3c65b2ac98944d1278454811d38f --- diff --git a/src/arch/sparc/tlb.cc b/src/arch/sparc/tlb.cc index b6880ff94..52791e12a 100644 --- a/src/arch/sparc/tlb.cc +++ b/src/arch/sparc/tlb.cc @@ -1363,11 +1363,6 @@ TLB::serialize(std::ostream &os) SERIALIZE_SCALAR(cntr); SERIALIZE_ARRAY(free_list, cntr); - for (int x = 0; x < size; x++) { - nameOut(os, csprintf("%s.PTE%d", name(), x)); - tlb[x].serialize(os); - } - SERIALIZE_SCALAR(c0_tsb_ps0); SERIALIZE_SCALAR(c0_tsb_ps1); SERIALIZE_SCALAR(c0_config); @@ -1376,6 +1371,11 @@ TLB::serialize(std::ostream &os) SERIALIZE_SCALAR(cx_config); SERIALIZE_SCALAR(sfsr); SERIALIZE_SCALAR(tag_access); + + for (int x = 0; x < size; x++) { + nameOut(os, csprintf("%s.PTE%d", name(), x)); + tlb[x].serialize(os); + } } void @@ -1398,14 +1398,6 @@ TLB::unserialize(Checkpoint *cp, const std::string §ion) for (int x = 0; x < cntr; x++) freeList.push_back(&tlb[free_list[x]]); - lookupTable.clear(); - for (int x = 0; x < size; x++) { - tlb[x].unserialize(cp, csprintf("%s.PTE%d", section, x)); - if (tlb[x].valid) - lookupTable.insert(tlb[x].range, &tlb[x]); - - } - UNSERIALIZE_SCALAR(c0_tsb_ps0); UNSERIALIZE_SCALAR(c0_tsb_ps1); UNSERIALIZE_SCALAR(c0_config); @@ -1414,6 +1406,14 @@ TLB::unserialize(Checkpoint *cp, const std::string §ion) UNSERIALIZE_SCALAR(cx_config); UNSERIALIZE_SCALAR(sfsr); UNSERIALIZE_SCALAR(tag_access); + + lookupTable.clear(); + for (int x = 0; x < size; x++) { + tlb[x].unserialize(cp, csprintf("%s.PTE%d", section, x)); + if (tlb[x].valid) + lookupTable.insert(tlb[x].range, &tlb[x]); + + } } void