CPU: Make the cpus check the pc event queues in SE mode.
--HG-- extra : convert_revision : 9dc4ea136c3c3f87a73d55e91bc4aae4eba70464
This commit is contained in:
parent
48041fdc53
commit
988cdb49f2
|
@ -910,25 +910,21 @@ DefaultCommit<Impl>::commitInsts()
|
|||
microPC[tid] = nextMicroPC[tid];
|
||||
nextMicroPC[tid] = microPC[tid] + 1;
|
||||
|
||||
#if FULL_SYSTEM
|
||||
int count = 0;
|
||||
Addr oldpc;
|
||||
// Debug statement. Checks to make sure we're not
|
||||
// currently updating state while handling PC events.
|
||||
assert(!thread[tid]->inSyscall && !thread[tid]->trapPending);
|
||||
do {
|
||||
// Debug statement. Checks to make sure we're not
|
||||
// currently updating state while handling PC events.
|
||||
if (count == 0)
|
||||
assert(!thread[tid]->inSyscall &&
|
||||
!thread[tid]->trapPending);
|
||||
oldpc = PC[tid];
|
||||
cpu->system->pcEventQueue.service(
|
||||
thread[tid]->getTC());
|
||||
cpu->system->pcEventQueue.service(thread[tid]->getTC());
|
||||
count++;
|
||||
} while (oldpc != PC[tid]);
|
||||
if (count > 1) {
|
||||
DPRINTF(Commit, "PC skip function event, stopping commit\n");
|
||||
DPRINTF(Commit,
|
||||
"PC skip function event, stopping commit\n");
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
DPRINTF(Commit, "Unable to commit head instruction PC:%#x "
|
||||
"[tid:%i] [sn:%i].\n",
|
||||
|
|
|
@ -493,12 +493,10 @@ BaseSimpleCPU::advancePC(Fault fault)
|
|||
}
|
||||
}
|
||||
|
||||
#if FULL_SYSTEM
|
||||
Addr oldpc;
|
||||
do {
|
||||
oldpc = thread->readPC();
|
||||
system->pcEventQueue.service(tc);
|
||||
} while (oldpc != thread->readPC());
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue