CPU: The API change to EventWrapper did not get propagated to the entirety of TimingSimpleCPU.
The constructor no-longer schedules an event at construction and the implict conversion between int and bool was allowing the old code to compile without warning. Signed-off By: Ali Saidi
This commit is contained in:
parent
cfa32d8de7
commit
95af120e60
2 changed files with 6 additions and 13 deletions
|
@ -105,7 +105,7 @@ TimingSimpleCPU::CpuPort::TickEvent::schedule(PacketPtr _pkt, Tick t)
|
||||||
}
|
}
|
||||||
|
|
||||||
TimingSimpleCPU::TimingSimpleCPU(TimingSimpleCPUParams *p)
|
TimingSimpleCPU::TimingSimpleCPU(TimingSimpleCPUParams *p)
|
||||||
: BaseSimpleCPU(p), icachePort(this, p->clock), dcachePort(this, p->clock)
|
: BaseSimpleCPU(p), icachePort(this, p->clock), dcachePort(this, p->clock), fetchEvent(this)
|
||||||
{
|
{
|
||||||
_status = Idle;
|
_status = Idle;
|
||||||
|
|
||||||
|
@ -114,7 +114,6 @@ TimingSimpleCPU::TimingSimpleCPU(TimingSimpleCPUParams *p)
|
||||||
|
|
||||||
ifetch_pkt = dcache_pkt = NULL;
|
ifetch_pkt = dcache_pkt = NULL;
|
||||||
drainEvent = NULL;
|
drainEvent = NULL;
|
||||||
fetchEvent = NULL;
|
|
||||||
previousTick = 0;
|
previousTick = 0;
|
||||||
changeState(SimObject::Running);
|
changeState(SimObject::Running);
|
||||||
}
|
}
|
||||||
|
@ -162,15 +161,10 @@ TimingSimpleCPU::resume()
|
||||||
if (_status != SwitchedOut && _status != Idle) {
|
if (_status != SwitchedOut && _status != Idle) {
|
||||||
assert(system->getMemoryMode() == Enums::timing);
|
assert(system->getMemoryMode() == Enums::timing);
|
||||||
|
|
||||||
// Delete the old event if it existed.
|
if (fetchEvent.scheduled())
|
||||||
if (fetchEvent) {
|
deschedule(fetchEvent);
|
||||||
if (fetchEvent->scheduled())
|
|
||||||
deschedule(fetchEvent);
|
|
||||||
|
|
||||||
delete fetchEvent;
|
schedule(fetchEvent, nextCycle());
|
||||||
}
|
|
||||||
|
|
||||||
fetchEvent = new FetchEvent(this, nextCycle());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
changeState(SimObject::Running);
|
changeState(SimObject::Running);
|
||||||
|
@ -185,7 +179,7 @@ TimingSimpleCPU::switchOut()
|
||||||
|
|
||||||
// If we've been scheduled to resume but are then told to switch out,
|
// If we've been scheduled to resume but are then told to switch out,
|
||||||
// we'll need to cancel it.
|
// we'll need to cancel it.
|
||||||
if (fetchEvent && fetchEvent->scheduled())
|
if (fetchEvent.scheduled())
|
||||||
deschedule(fetchEvent);
|
deschedule(fetchEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,7 +222,6 @@ TimingSimpleCPU::activateContext(int thread_num, int delay)
|
||||||
_status = Running;
|
_status = Running;
|
||||||
|
|
||||||
// kick things off by initiating the fetch of the next instruction
|
// kick things off by initiating the fetch of the next instruction
|
||||||
fetchEvent = new FetchEvent(this);
|
|
||||||
schedule(fetchEvent, nextCycle(curTick + ticks(delay)));
|
schedule(fetchEvent, nextCycle(curTick + ticks(delay)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -192,7 +192,7 @@ class TimingSimpleCPU : public BaseSimpleCPU
|
||||||
private:
|
private:
|
||||||
|
|
||||||
typedef EventWrapper<TimingSimpleCPU, &TimingSimpleCPU::fetch> FetchEvent;
|
typedef EventWrapper<TimingSimpleCPU, &TimingSimpleCPU::fetch> FetchEvent;
|
||||||
FetchEvent *fetchEvent;
|
FetchEvent fetchEvent;
|
||||||
|
|
||||||
struct IprEvent : Event {
|
struct IprEvent : Event {
|
||||||
Packet *pkt;
|
Packet *pkt;
|
||||||
|
|
Loading…
Reference in a new issue