A more complete attempt to fix the clock skew.
--HG-- extra : convert_revision : b2d505de51fc5fcae5177b2a13140729474e249e
This commit is contained in:
parent
d5974eff73
commit
a46e19f738
1 changed files with 9 additions and 4 deletions
|
@ -188,8 +188,11 @@ AtomicSimpleCPU::resume()
|
|||
|
||||
changeState(SimObject::Running);
|
||||
if (thread->status() == ThreadContext::Active) {
|
||||
if (!tickEvent.scheduled())
|
||||
tickEvent.schedule(curTick);
|
||||
if (!tickEvent.scheduled()) {
|
||||
Tick nextTick = curTick + cycles(1) - 1;
|
||||
nextTick -= (nextTick % (cycles(1)));
|
||||
tickEvent.schedule(nextTick);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -217,7 +220,9 @@ AtomicSimpleCPU::takeOverFrom(BaseCPU *oldCPU)
|
|||
ThreadContext *tc = threadContexts[i];
|
||||
if (tc->status() == ThreadContext::Active && _status != Running) {
|
||||
_status = Running;
|
||||
tickEvent.schedule(curTick);
|
||||
Tick nextTick = curTick + cycles(1) - 1;
|
||||
nextTick -= (nextTick % (cycles(1)));
|
||||
tickEvent.schedule(nextTick);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -237,7 +242,7 @@ AtomicSimpleCPU::activateContext(int thread_num, int delay)
|
|||
//Make sure ticks are still on multiples of cycles
|
||||
Tick nextTick = curTick + cycles(1) - 1;
|
||||
nextTick -= (nextTick % (cycles(1)));
|
||||
tickEvent.schedule(curTick + cycles(delay));
|
||||
tickEvent.schedule(nextTick);
|
||||
_status = Running;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue