150,153c150,151
< for (ThreadID tid = 0; tid < numThreads; ++tid) {
< Event *event = new SimLoopExitEvent(cause, 0);
< comInstEventQueue[tid]->schedule(event, p->max_insts_any_thread);
< }
---
> for (ThreadID tid = 0; tid < numThreads; ++tid)
> scheduleInstStop(tid, p->max_insts_any_thread, cause);
162,165c160,161
< for (size_t i = 0; i < p->simpoint_start_insts.size(); ++i) {
< Event *event = new SimLoopExitEvent(cause, 0);
< comInstEventQueue[0]->schedule(event, p->simpoint_start_insts[i]);
< }
---
> for (size_t i = 0; i < p->simpoint_start_insts.size(); ++i)
> scheduleInstStop(0, p->simpoint_start_insts[i], cause);
192,195c188,189
< for (ThreadID tid = 0; tid < numThreads; ++tid) {
< Event *event = new SimLoopExitEvent(cause, 0);
< comLoadEventQueue[tid]->schedule(event, p->max_loads_any_thread);
< }
---
> for (ThreadID tid = 0; tid < numThreads; ++tid)
> scheduleLoadStop(tid, p->max_loads_any_thread, cause);
574a569,587
> BaseCPU::scheduleInstStop(ThreadID tid, Counter insts, const char *cause)
> {
> const Tick now(comInstEventQueue[tid]->getCurTick());
> Event *event(new SimLoopExitEvent(cause, 0));
>
> comInstEventQueue[tid]->schedule(event, now + insts);
> }
>
> void
> BaseCPU::scheduleLoadStop(ThreadID tid, Counter loads, const char *cause)
> {
> const Tick now(comLoadEventQueue[tid]->getCurTick());
> Event *event(new SimLoopExitEvent(cause, 0));
>
> comLoadEventQueue[tid]->schedule(event, now + loads);
> }
>
>
> void