summaryrefslogtreecommitdiff
path: root/src/arch/sparc/tlb.cc
diff options
context:
space:
mode:
authorAli Saidi <saidi@eecs.umich.edu>2007-11-19 22:47:08 -0500
committerAli Saidi <saidi@eecs.umich.edu>2007-11-19 22:47:08 -0500
commitac50694d1acb87a6537f8c34637f412680201e50 (patch)
treefa8f118f591ceb242a4f09709f1b884cbaebfc6c /src/arch/sparc/tlb.cc
parent8026ecbb8e9f93894b15ac5422c58ecedfbf9fdf (diff)
downloadgem5-ac50694d1acb87a6537f8c34637f412680201e50.tar.xz
Serialization: Serialize SPARC PTEs last so their nameOut() calls don't interfere with other serialization in the TLB.
--HG-- extra : convert_revision : 8a8478a200cd3c65b2ac98944d1278454811d38f
Diffstat (limited to 'src/arch/sparc/tlb.cc')
-rw-r--r--src/arch/sparc/tlb.cc26
1 files changed, 13 insertions, 13 deletions
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 &section)
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 &section)
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