systemc: Remove the TLM dependence on a non-standard method.
authorGabe Black <gabeblack@google.com>
Tue, 11 Dec 2018 07:37:24 +0000 (23:37 -0800)
committerGabe Black <gabeblack@google.com>
Wed, 9 Jan 2019 01:36:28 +0000 (01:36 +0000)
The sc_event_finder class in Accellera's implementation has a
non-standard report_error function that it uses internally. The TLM
headers were calling that function in their own event finder subclass.
This change replaces that call with what should be an equivalent bit of
code which is based on the report_error implementation.

Change-Id: Id57d26791df01403a77e70d5f4a00f650dc33599
Reviewed-on: https://gem5-review.googlesource.com/c/15063
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

src/systemc/ext/tlm_core/1/req_rsp/ports/event_finder.hh

index cdf2d8b58ec033014f0791e3c5cee20c0bcb9316..a56118b3fb5659a4b7a631f822ab1df84d992e32 100644 (file)
@@ -20,6 +20,8 @@
 #ifndef __SYSTEMC_EXT_TLM_CORE_1_REQ_RSP_PORTS_EVENT_FINDER_HH__
 #define __SYSTEMC_EXT_TLM_CORE_1_REQ_RSP_PORTS_EVENT_FINDER_HH__
 
+#include <sstream>
+
 #include "tlm_core/1/req_rsp/interfaces/tag.hh"
 
 namespace tlm
@@ -56,9 +58,12 @@ tlm_event_finder_t<IF, T>::find_event(sc_core::sc_interface *if_p) const
 {
     const IF *iface = if_p ? dynamic_cast<const IF *>(if_p) :
         dynamic_cast<const IF *>(port()->_gem5Interface(0));
-    static sc_core::sc_event none;
     if (iface == nullptr) {
-        report_error(sc_core::SC_ID_FIND_EVENT_, "port is not bound");
+        std::ostringstream out;
+        out << "port is not bound: port '" << port()->name() <<
+            "' (" << port()->kind() << ")";
+        SC_REPORT_ERROR(sc_core::SC_ID_FIND_EVENT_, out.str().c_str());
+        static sc_core::sc_event none;
         return none;
     }
     return (const_cast<IF *>(iface)->*m_event_method)(nullptr);