Gabe Black has uploaded this change for review. (
https://gem5-review.googlesource.com/c/public/gem5/+/13188
Change subject: systemc: Merge notify and notifyWork and ignore disabled
for resets.
......................................................................
systemc: Merge notify and notifyWork and ignore disabled for resets.
Always notify a process if a reset signal changed, even if it's
disabled. Also, because notify was what checked disabled and only
notifyWork was virtual, this change merges the two so both can be
overridden without any extra virtual functions.
Change-Id: I1e3563fa587aab65a5e95cd8a382ed48e093de3b
---
M src/systemc/core/sensitivity.cc
M src/systemc/core/sensitivity.hh
2 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/src/systemc/core/sensitivity.cc
b/src/systemc/core/sensitivity.cc
index b0709ee..9ce6fc4 100644
--- a/src/systemc/core/sensitivity.cc
+++ b/src/systemc/core/sensitivity.cc
@@ -58,7 +58,8 @@
{
if (process->disabled())
return false;
- return notifyWork(e);
+ satisfy();
+ return true;
}
bool
@@ -213,8 +214,11 @@
{}
bool
-DynamicSensitivityEventOrList::notifyWork(Event *e)
+DynamicSensitivityEventOrList::notify(Event *e)
{
+ if (process->disabled())
+ return false;
+
events.erase(e->sc_event());
// All the other events need this deleted from their lists since this
@@ -232,8 +236,11 @@
{}
bool
-DynamicSensitivityEventAndList::notifyWork(Event *e)
+DynamicSensitivityEventAndList::notify(Event *e)
{
+ if (process->disabled())
+ return false;
+
events.erase(e->sc_event());
// This sensitivity is satisfied if all events have triggered.
@@ -294,7 +301,7 @@
}
bool
-ResetSensitivitySignal::notifyWork(Event *e)
+ResetSensitivitySignal::notify(Event *e)
{
process->signalReset(_signal->read() == val(), sync());
return true;
diff --git a/src/systemc/core/sensitivity.hh
b/src/systemc/core/sensitivity.hh
index 0e2f491..62c9682 100644
--- a/src/systemc/core/sensitivity.hh
+++ b/src/systemc/core/sensitivity.hh
@@ -72,18 +72,11 @@
virtual void addToEvent(const ::sc_core::sc_event *e) = 0;
virtual void delFromEvent(const ::sc_core::sc_event *e) = 0;
- virtual bool
- notifyWork(Event *e)
- {
- satisfy();
- return true;
- }
-
public:
virtual void clear() = 0;
void satisfy();
- bool notify(Event *e);
+ virtual bool notify(Event *e);
enum Category
{
@@ -307,7 +300,7 @@
DynamicSensitivityEventOrList(
Process *p, const sc_core::sc_event_or_list *eol);
- bool notifyWork(Event *e) override;
+ bool notify(Event *e) override;
};
//XXX This sensitivity can't be reused. To reset it, it has to be deleted
and
@@ -323,7 +316,7 @@
DynamicSensitivityEventAndList(
Process *p, const sc_core::sc_event_and_list *eal);
- bool notifyWork(Event *e) override;
+ bool notify(Event *e) override;
};
/*
@@ -355,7 +348,7 @@
Process *p, const sc_core::sc_signal_in_if<bool> *signal,
bool _val, bool _sync);
- bool notifyWork(Event *e) override;
+ bool notify(Event *e) override;
};
class ResetSensitivityPort : public ResetSensitivitySignal
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/13188
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I1e3563fa587aab65a5e95cd8a382ed48e093de3b
Gerrit-Change-Number: 13188
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev