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:
@@ -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
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user