#include "base/logging.hh"
#include "systemc/core/process.hh"
+#include "systemc/ext/channel/sc_in.hh"
+#include "systemc/ext/channel/sc_inout.hh"
+#include "systemc/ext/channel/sc_signal_in_if.hh"
#include "systemc/ext/core/sc_interface.hh"
#include "systemc/ext/core/sc_sensitive.hh"
return *this;
}
+
+void
+sc_sensitive::operator () (::sc_gem5::Process *p,
+ const sc_signal_in_if<bool> &i)
+{
+ sc_gem5::newStaticSensitivityEvent(p, &i.posedge_event());
+}
+
+void
+sc_sensitive::operator () (::sc_gem5::Process *p,
+ const sc_signal_in_if<sc_dt::sc_logic> &i)
+{
+ sc_gem5::newStaticSensitivityEvent(p, &i.posedge_event());
+}
+
+void
+sc_sensitive::operator () (::sc_gem5::Process *p, const sc_in<bool> &port)
+{
+ sc_gem5::newStaticSensitivityFinder(p, &port.pos());
+}
+
+void
+sc_sensitive::operator () (::sc_gem5::Process *p,
+ const sc_in<sc_dt::sc_logic> &port)
+{
+ sc_gem5::newStaticSensitivityFinder(p, &port.pos());
+}
+
+void
+sc_sensitive::operator () (::sc_gem5::Process *p, const sc_inout<bool> &port)
+{
+ sc_gem5::newStaticSensitivityFinder(p, &port.pos());
+}
+
+void
+sc_sensitive::operator () (::sc_gem5::Process *p,
+ const sc_inout<sc_dt::sc_logic> &port)
+{
+ sc_gem5::newStaticSensitivityFinder(p, &port.pos());
+}
+
+void
+sc_sensitive::operator () (::sc_gem5::Process *p, sc_event_finder &f)
+{
+ sc_gem5::newStaticSensitivityFinder(p, &f);
+}
+
} // namespace sc_core
#name, new ::sc_gem5::ProcessMemberFuncWrapper< \
SC_CURRENT_USER_MODULE>(this, \
&SC_CURRENT_USER_MODULE::name)); \
- if (p) { \
- this->sensitive << p; \
- this->sensitive << clk; \
- } \
+ if (p) \
+ this->sensitive(p, clk); \
}
// Nonstandard
} // namespace sc_gem5
+namespace sc_dt
+{
+
+class sc_logic;
+
+} // namespace sc_dt
+
namespace sc_core
{
class sc_module;
class sc_port_base;
+template <class T>
+class sc_signal_in_if;
+
+template <class T>
+class sc_in;
+
+template <class T>
+class sc_inout;
+
class sc_sensitive
{
public:
sc_sensitive &operator << (::sc_gem5::Process *p);
+ // Nonstandard.
+ void operator () (::sc_gem5::Process *p, const sc_signal_in_if<bool> &);
+ void operator () (::sc_gem5::Process *p,
+ const sc_signal_in_if<sc_dt::sc_logic> &);
+ void operator () (::sc_gem5::Process *p, const sc_in<bool> &);
+ void operator () (::sc_gem5::Process *p, const sc_in<sc_dt::sc_logic> &);
+ void operator () (::sc_gem5::Process *p, const sc_inout<bool> &);
+ void operator () (::sc_gem5::Process *p,
+ const sc_inout<sc_dt::sc_logic> &);
+ void operator () (::sc_gem5::Process *p, sc_event_finder &);
+
private:
friend class sc_module;