summaryrefslogtreecommitdiff
path: root/src/systemc/core
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2018-08-22 22:45:29 -0700
committerGabe Black <gabeblack@google.com>2018-09-26 00:00:11 +0000
commitdd8b71b413fb511477358b65c7668e6e2574257e (patch)
treeec6cdbe1568686acd47700dfba63f87a248e3b5c /src/systemc/core
parent92d1d2c87366c8e9246ad150ff7a71513da4d773 (diff)
downloadgem5-dd8b71b413fb511477358b65c7668e6e2574257e.tar.xz
systemc: Make sc_process_b less hokey, and make WAIT* work.
This change puts sc_process_b into the inheritance hierarchy for the Process types. It also adds the nonstandard sc_set_location function and calls it from the nonstandard WAIT* macros. Change-Id: Ic997dcf74d262774dd7b53504146e372e03af2e0 Reviewed-on: https://gem5-review.googlesource.com/12259 Reviewed-by: Gabe Black <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
Diffstat (limited to 'src/systemc/core')
-rw-r--r--src/systemc/core/process.cc2
-rw-r--r--src/systemc/core/process.hh2
-rw-r--r--src/systemc/core/sc_process_handle.cc18
3 files changed, 9 insertions, 13 deletions
diff --git a/src/systemc/core/process.cc b/src/systemc/core/process.cc
index 5d5c5216f..1a101f749 100644
--- a/src/systemc/core/process.cc
+++ b/src/systemc/core/process.cc
@@ -371,7 +371,7 @@ Process::lastReport(::sc_core::sc_report *report)
::sc_core::sc_report *Process::lastReport() const { return _lastReport.get(); }
Process::Process(const char *name, ProcessFuncWrapper *func, bool _dynamic) :
- ::sc_core::sc_object(name), excWrapper(nullptr), func(func),
+ ::sc_core::sc_process_b(name), excWrapper(nullptr), func(func),
_needsStart(true), _dynamic(_dynamic), _isUnwinding(false),
_terminated(false), _suspended(false), _disabled(false),
_syncReset(false), refCount(0), stackSize(::Fiber::DefaultStackSize),
diff --git a/src/systemc/core/process.hh b/src/systemc/core/process.hh
index fe75aa7de..17f417b6e 100644
--- a/src/systemc/core/process.hh
+++ b/src/systemc/core/process.hh
@@ -266,7 +266,7 @@ class PendingSensitivityFinder : public PendingSensitivity
typedef std::vector<PendingSensitivity *> PendingSensitivities;
-class Process : public ::sc_core::sc_object, public ListNode
+class Process : public ::sc_core::sc_process_b, public ListNode
{
public:
virtual ::sc_core::sc_curr_proc_kind procKind() const = 0;
diff --git a/src/systemc/core/sc_process_handle.cc b/src/systemc/core/sc_process_handle.cc
index 256d64989..8c756afa2 100644
--- a/src/systemc/core/sc_process_handle.cc
+++ b/src/systemc/core/sc_process_handle.cc
@@ -55,18 +55,14 @@ sc_unwind_exception::sc_unwind_exception(const sc_unwind_exception &e) :
sc_unwind_exception::~sc_unwind_exception() throw() {}
-const char *
-sc_process_b::name()
-{
- warn("%s not implemented.\n", __PRETTY_FUNCTION__);
- return "";
-}
-
-const char *
-sc_process_b::kind()
+void
+sc_set_location(const char *file, int lineno)
{
- warn("%s not implemented.\n", __PRETTY_FUNCTION__);
- return "";
+ sc_process_b *current = ::sc_gem5::scheduler.current();
+ if (!current)
+ return;
+ current->file = file;
+ current->lineno = lineno;
}