[Avida-SVN] r3039 - in branches/interrupt/source: cpu main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Sun Dec 14 18:11:26 PST 2008
Author: beckma24
Date: 2008-12-14 21:11:26 -0500 (Sun, 14 Dec 2008)
New Revision: 3039
Modified:
branches/interrupt/source/cpu/cHardwareCPU.cc
branches/interrupt/source/main/cOrganism.cc
Log:
Initialization of pushed interrupt state... looking for nondeterminism
Modified: branches/interrupt/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/interrupt/source/cpu/cHardwareCPU.cc 2008-12-15 01:51:44 UTC (rev 3038)
+++ branches/interrupt/source/cpu/cHardwareCPU.cc 2008-12-15 02:11:26 UTC (rev 3039)
@@ -203,14 +203,24 @@
hardware = in_hardware;
m_id = in_id;
- for (int i = 0; i < NUM_REGISTERS; i++) reg[i] = 0;
- for (int i = 0; i < NUM_HEADS; i++) heads[i].Reset(in_hardware);
-
+ for (int i = 0; i < NUM_REGISTERS; i++) {
+ reg[i] = 0;
+ pushedState.reg[i] = 0;
+ }
+ for (int i = 0; i < NUM_HEADS; i++) {
+ heads[i].Reset(in_hardware);
+ pushedState.heads[i].Reset(in_hardware);
+ }
stack.Clear();
+ pushedState.stack.Clear();
cur_stack = 0;
+ pushedState.cur_stack = 0;
cur_head = nHardware::HEAD_IP;
+ pushedState.cur_head = nHardware::HEAD_IP;
read_label.Clear();
+ pushedState.read_label.Clear();
next_label.Clear();
+ pushedState.next_label.Clear();
interrupted = false;
Modified: branches/interrupt/source/main/cOrganism.cc
===================================================================
--- branches/interrupt/source/main/cOrganism.cc 2008-12-15 01:51:44 UTC (rev 3038)
+++ branches/interrupt/source/main/cOrganism.cc 2008-12-15 02:11:26 UTC (rev 3039)
@@ -697,7 +697,7 @@
m_msg->received.push_back(msg);
- cLocalThread* currentThread = static_cast<cHardwareCPU*>(m_hardware)->GetThread(GetHardware(true)->GetCurThread());
+ cLocalThread* currentThread = static_cast<cHardwareCPU*>(m_hardware)->GetThread(m_hardware->GetCurThread());
if(m_world->GetConfig().INTERRUPT_ENABLED.Get() && currentThread->isInterrupted() == false) {
currentThread->interruptContextSwitch(cLocalThread::MSG_INTERRUPT);
}
More information about the Avida-cvs
mailing list