From 628a3b1d01702d1e3888c40c4a02c38c636ae6d4 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sun, 29 Oct 2006 04:04:50 -0500 Subject: An attempt to serialize the state of the micro code mechanism in the simple cpu. src/cpu/simple/base.cc: Make a microcoded op start at the current micropc, rather than starting at 0. src/cpu/thread_state.cc: Serialize the microPC and nextMicroPC --HG-- extra : convert_revision : 5302215f17312ecef3ff4c6548acb05297ee4ff6 --- src/cpu/simple/base.cc | 6 ++++-- src/cpu/thread_state.cc | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/cpu/simple/base.cc b/src/cpu/simple/base.cc index cbb3980cb..253d33243 100644 --- a/src/cpu/simple/base.cc +++ b/src/cpu/simple/base.cc @@ -401,13 +401,15 @@ BaseSimpleCPU::preExecute() StaticInstPtr instPtr = StaticInst::decode(makeExtMI(inst, thread->getTC())); if (instPtr->isMacroOp()) { curMacroStaticInst = instPtr; - curStaticInst = curMacroStaticInst->fetchMicroOp(0); + curStaticInst = curMacroStaticInst-> + fetchMicroOp(thread->readMicroPC()); } else { curStaticInst = instPtr; } } else { //Read the next micro op from the macro op - curStaticInst = curMacroStaticInst->fetchMicroOp(thread->readMicroPC()); + curStaticInst = curMacroStaticInst-> + fetchMicroOp(thread->readMicroPC()); } diff --git a/src/cpu/thread_state.cc b/src/cpu/thread_state.cc index c644ae8d7..e6ebcc525 100644 --- a/src/cpu/thread_state.cc +++ b/src/cpu/thread_state.cc @@ -62,6 +62,8 @@ ThreadState::serialize(std::ostream &os) // thread_num and cpu_id are deterministic from the config SERIALIZE_SCALAR(funcExeInst); SERIALIZE_SCALAR(inst); + SERIALIZE_SCALAR(microPC); + SERIALIZE_SCALAR(nextMicroPC); #if FULL_SYSTEM Tick quiesceEndTick = 0; @@ -81,6 +83,8 @@ ThreadState::unserialize(Checkpoint *cp, const std::string §ion) // thread_num and cpu_id are deterministic from the config UNSERIALIZE_SCALAR(funcExeInst); UNSERIALIZE_SCALAR(inst); + UNSERIALIZE_SCALAR(microPC); + UNSERIALIZE_SCALAR(nextMicroPC); #if FULL_SYSTEM Tick quiesceEndTick; -- cgit v1.2.3