From 05e48787980102f826632adc3bdfbc711ae559ce Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Fri, 15 Jun 2018 17:29:44 -0700 Subject: systemc: Add the nonstandard, undocumented halt function. Used in the tests. Change-Id: I9b4f10600a50e0def1b5d55428cb4ad49e401295 Reviewed-on: https://gem5-review.googlesource.com/11263 Reviewed-by: Gabe Black Maintainer: Gabe Black --- src/systemc/core/sc_module.cc | 13 +++++++++++++ src/systemc/ext/core/_using.hh | 1 + src/systemc/ext/core/sc_module.hh | 8 ++++++++ 3 files changed, 22 insertions(+) diff --git a/src/systemc/core/sc_module.cc b/src/systemc/core/sc_module.cc index 646916fac..7e6b05976 100644 --- a/src/systemc/core/sc_module.cc +++ b/src/systemc/core/sc_module.cc @@ -370,6 +370,13 @@ sc_module::wait(double, sc_time_unit, const sc_event_and_list &) } +void +sc_module::halt() +{ + warn("%s not implemented.\n", __PRETTY_FUNCTION__); +} + + void next_trigger() { @@ -521,6 +528,12 @@ wait(double, sc_time_unit, const sc_event_and_list &) warn("%s not implemented.\n", __PRETTY_FUNCTION__); } +void +halt() +{ + warn("%s not implemented.\n", __PRETTY_FUNCTION__); +} + const char * sc_gen_unique_name(const char *) { diff --git a/src/systemc/ext/core/_using.hh b/src/systemc/ext/core/_using.hh index 5f5a23af4..32cbd7028 100644 --- a/src/systemc/ext/core/_using.hh +++ b/src/systemc/ext/core/_using.hh @@ -87,6 +87,7 @@ using sc_core::SC_BIND_PROXY_NIL; using sc_core::sc_module; using sc_core::next_trigger; using sc_core::wait; +using sc_core::halt; using sc_core::sc_gen_unique_name; using sc_core::sc_behavior; using sc_core::sc_channel; diff --git a/src/systemc/ext/core/sc_module.hh b/src/systemc/ext/core/sc_module.hh index c83cf1d3b..931eb3a86 100644 --- a/src/systemc/ext/core/sc_module.hh +++ b/src/systemc/ext/core/sc_module.hh @@ -186,6 +186,8 @@ class sc_module : public sc_object void wait(const sc_time &, const sc_event_and_list &); void wait(double, sc_time_unit, const sc_event_and_list &); + void halt(); + virtual void before_end_of_elaboration() {} virtual void end_of_elaboration() {} virtual void start_of_simulation() {} @@ -236,6 +238,12 @@ void wait(double, sc_time_unit, const sc_event_and_list &); #define SC_THREAD(name) /* Implementation defined */ #define SC_CTHREAD(name, clk) /* Implementation defined */ +// Nonstandard +// Documentation for this is very scarce, but it looks like it's supposed to +// stop the currently executing cthread, or if a cthread isn't running report +// an error. +void halt(); + const char *sc_gen_unique_name(const char *); typedef sc_module sc_behavior; -- cgit v1.2.3