The notifyWork function for SensitivityEventAndList assumes it's
being triggered by an event which is part of its list, but when
SensitivityTimeoutAndEventAndList triggers it might be from an event
or from a timeout. This change overrides notifyWork for that class and
makes it delegate to notifyWork for the subclasses depending on whether
there's an event pointer.
Change-Id: I598af2b78d71ee9934edea10ca7ac5c88149e3f3
Reviewed-on: https://gem5-review.googlesource.com/12247
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Event::getFromScEvent(e)->delSensitivity(this);
}
+void
+SensitivityTimeoutAndEventAndList::notifyWork(Event *e)
+{
+ if (e) {
+ // An event went off which must be part of the sc_event_and_list.
+ SensitivityEventAndList::notifyWork(e);
+ } else {
+ // There's no inciting event, so this must be a timeout.
+ SensitivityTimeout::notifyWork(e);
+ }
+}
+
class UnwindExceptionReset : public ::sc_core::sc_unwind_exception
{
Sensitivity(p), SensitivityTimeout(p, t),
SensitivityEventAndList(p, eal)
{}
+
+ void notifyWork(Event *e) override;
};
class SensitivityTimeoutAndEventOrList :