summaryrefslogtreecommitdiff
path: root/src/systemc/ext
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemc/ext')
-rw-r--r--src/systemc/ext/core/sc_export.hh16
-rw-r--r--src/systemc/ext/core/sc_port.hh13
-rw-r--r--src/systemc/ext/core/sc_prim.hh2
3 files changed, 23 insertions, 8 deletions
diff --git a/src/systemc/ext/core/sc_export.hh b/src/systemc/ext/core/sc_export.hh
index f3cf81619..f5ce894b8 100644
--- a/src/systemc/ext/core/sc_export.hh
+++ b/src/systemc/ext/core/sc_export.hh
@@ -46,6 +46,14 @@ class sc_export_base : public sc_object
virtual sc_interface *get_iterface() = 0;
virtual const sc_interface *get_interface() const = 0;
+
+ protected:
+ friend class sc_gem5::Kernel;
+
+ virtual void before_end_of_elaboration() = 0;
+ virtual void end_of_elaboration() = 0;
+ virtual void start_of_simulation() = 0;
+ virtual void end_of_simulation() = 0;
};
template <class IF>
@@ -74,10 +82,10 @@ class sc_export : public sc_export_base
const sc_interface *get_interface() const override { return interface; }
protected:
- virtual void before_end_of_elaboration() {}
- virtual void end_of_elaboration() {}
- virtual void start_of_simulation() {}
- virtual void end_of_simulation() {}
+ void before_end_of_elaboration() {}
+ void end_of_elaboration() {}
+ void start_of_simulation() {}
+ void end_of_simulation() {}
private:
IF *interface;
diff --git a/src/systemc/ext/core/sc_port.hh b/src/systemc/ext/core/sc_port.hh
index 6031d5495..73f5362b6 100644
--- a/src/systemc/ext/core/sc_port.hh
+++ b/src/systemc/ext/core/sc_port.hh
@@ -75,6 +75,11 @@ class sc_port_base : public sc_object
virtual int vbind(sc_interface &) = 0;
virtual int vbind(sc_port_base &) = 0;
+ virtual void before_end_of_elaboration() = 0;
+ virtual void end_of_elaboration() = 0;
+ virtual void start_of_simulation() = 0;
+ virtual void end_of_simulation() = 0;
+
private:
friend class ::sc_gem5::PendingSensitivityPort;
friend class ::sc_gem5::Kernel;
@@ -110,10 +115,10 @@ class sc_port_b : public sc_port_base
const sc_interface *get_interface() const { return _interfaces.at(0); }
protected:
- virtual void before_end_of_elaboration() {}
- virtual void end_of_elaboration() {}
- virtual void start_of_elaboration() {}
- virtual void end_of_simulation() {}
+ void before_end_of_elaboration() {}
+ void end_of_elaboration() {}
+ void start_of_simulation() {}
+ void end_of_simulation() {}
explicit sc_port_b(int n, sc_port_policy p) :
sc_port_base(sc_gen_unique_name("port"), n, p)
diff --git a/src/systemc/ext/core/sc_prim.hh b/src/systemc/ext/core/sc_prim.hh
index 106489280..99e231456 100644
--- a/src/systemc/ext/core/sc_prim.hh
+++ b/src/systemc/ext/core/sc_prim.hh
@@ -91,6 +91,8 @@ class sc_prim_channel : public sc_object
void wait(const sc_time &, const sc_event_and_list &);
void wait(double, sc_time_unit, const sc_event_and_list &);
+ friend class sc_gem5::Kernel;
+
virtual void before_end_of_elaboration() {}
virtual void end_of_elaboration() {}
virtual void start_of_simulation() {}