cpu: provide a wakeup mechanism that can be used to pull CPUs out of sleep.

Make interrupts use the new wakeup method, and pull all of the interrupt
stuff into the cpu base class so that only the wakeup code needs to be updated.
I tried to make wakeup, wakeCPU, and the various other mechanisms for waking
and sleeping a little more sane, but I couldn't understand why the statistics
were changing the way they were.  Maybe we'll try again some day.
This commit is contained in:
Nathan Binkert
2009-01-24 07:27:21 -08:00
parent 56d5212ba7
commit f0fb3ac060
8 changed files with 47 additions and 47 deletions

View File

@@ -303,14 +303,13 @@ BaseSimpleCPU::dbg_vtophys(Addr addr)
#if FULL_SYSTEM
void
BaseSimpleCPU::postInterrupt(int int_num, int index)
BaseSimpleCPU::wakeup()
{
BaseCPU::postInterrupt(int_num, index);
if (thread->status() != ThreadContext::Suspended)
return;
if (thread->status() == ThreadContext::Suspended) {
DPRINTF(Quiesce,"Suspended Processor awoke\n");
thread->activate();
}
DPRINTF(Quiesce,"Suspended Processor awoke\n");
thread->activate();
}
#endif // FULL_SYSTEM

View File

@@ -98,7 +98,7 @@ class BaseSimpleCPU : public BaseCPU
}
public:
void postInterrupt(int int_num, int index);
void wakeup();
void zero_fill_64(Addr addr) {
static int warned = 0;