summaryrefslogtreecommitdiff
path: root/src/dev/x86/i82094aa.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/dev/x86/i82094aa.cc')
-rw-r--r--src/dev/x86/i82094aa.cc29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/dev/x86/i82094aa.cc b/src/dev/x86/i82094aa.cc
index 65b3ee732..cb9b51d58 100644
--- a/src/dev/x86/i82094aa.cc
+++ b/src/dev/x86/i82094aa.cc
@@ -236,6 +236,35 @@ X86ISA::I82094AA::registerLocalApic(int initialId, Interrupts *localApic)
localApics[initialId] = localApic;
}
+void
+X86ISA::I82094AA::serialize(std::ostream &os)
+{
+ uint64_t* redirTableArray = (uint64_t*)redirTable;
+ SERIALIZE_SCALAR(regSel);
+ SERIALIZE_SCALAR(initialApicId);
+ SERIALIZE_SCALAR(id);
+ SERIALIZE_SCALAR(arbId);
+ SERIALIZE_SCALAR(lowestPriorityOffset);
+ SERIALIZE_ARRAY(redirTableArray, TableSize);
+ SERIALIZE_ARRAY(pinStates, TableSize);
+}
+
+void
+X86ISA::I82094AA::unserialize(Checkpoint *cp, const std::string &section)
+{
+ uint64_t redirTableArray[TableSize];
+ UNSERIALIZE_SCALAR(regSel);
+ UNSERIALIZE_SCALAR(initialApicId);
+ UNSERIALIZE_SCALAR(id);
+ UNSERIALIZE_SCALAR(arbId);
+ UNSERIALIZE_SCALAR(lowestPriorityOffset);
+ UNSERIALIZE_ARRAY(redirTableArray, TableSize);
+ UNSERIALIZE_ARRAY(pinStates, TableSize);
+ for (int i = 0; i < TableSize; i++) {
+ redirTable[i] = (RedirTableEntry)redirTableArray[i];
+ }
+}
+
X86ISA::I82094AA *
I82094AAParams::create()
{