systemc: Remove the TLM dependence on a non-standard method.

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>
This commit is contained in:
Gabe Black
2018-12-10 23:37:24 -08:00
parent de51d7c4e7
commit 96ce18b828

View 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);