From ac50694d1acb87a6537f8c34637f412680201e50 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Mon, 19 Nov 2007 22:47:08 -0500 Subject: Serialization: Serialize SPARC PTEs last so their nameOut() calls don't interfere with other serialization in the TLB. --HG-- extra : convert_revision : 8a8478a200cd3c65b2ac98944d1278454811d38f --- src/arch/sparc/tlb.cc | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src/arch/sparc') 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 -- cgit v1.2.3