diff options
Diffstat (limited to 'src/cpu/simple_thread.hh')
-rw-r--r-- | src/cpu/simple_thread.hh | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/cpu/simple_thread.hh b/src/cpu/simple_thread.hh index 86d31b235..5ed0f2982 100644 --- a/src/cpu/simple_thread.hh +++ b/src/cpu/simple_thread.hh @@ -127,6 +127,11 @@ class SimpleThread : public ThreadState, public ThreadContext } PCEventQueue pcEventQueue; + /** + * An instruction-based event queue. Used for scheduling events based on + * number of instructions committed. + */ + EventQueue comInstEventQueue; System *system; @@ -193,6 +198,33 @@ class SimpleThread : public ThreadState, public ThreadContext bool schedule(PCEvent *e) override { return pcEventQueue.schedule(e); } bool remove(PCEvent *e) override { return pcEventQueue.remove(e); } + Tick + nextInstEventCount() override + { + return comInstEventQueue.empty() ? + MaxTick : comInstEventQueue.nextTick(); + } + void + serviceInstCountEvents(Tick count) override + { + comInstEventQueue.serviceEvents(count); + } + void + scheduleInstCountEvent(Event *event, Tick count) override + { + comInstEventQueue.schedule(event, count); + } + void + descheduleInstCountEvent(Event *event) override + { + comInstEventQueue.deschedule(event); + } + Tick + getCurrentInstCount() override + { + return comInstEventQueue.getCurTick(); + } + BaseCPU *getCpuPtr() override { return baseCpu; } int cpuId() const override { return ThreadState::cpuId(); } |