diff --git a/src/systemc/core/SConscript b/src/systemc/core/SConscript
index e12ed59..8bff1b3 100644
--- a/src/systemc/core/SConscript
+++ b/src/systemc/core/SConscript
@@ -31,6 +31,7 @@
     SimObject('SystemC.py')
 
     Source('kernel.cc')
+    Source('module.cc')
 
     Source('sc_attr.cc')
     Source('sc_event.cc')
diff --git a/src/systemc/core/module.cc b/src/systemc/core/module.cc
new file mode 100644
index 0000000..97a4a9f
--- /dev/null
+++ b/src/systemc/core/module.cc
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2018 Google, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Gabe Black
+ */
+
+#include "systemc/core/module.hh"
+
+#include <list>
+
+#include "base/logging.hh"
+
+namespace SystemC
+{
+
+namespace
+{
+
+std::list<Module *> _modules;
+
+Module *_top_module = nullptr;
+
+} // anonymous namespace
+
+void
+Module::push()
+{
+    if (!_top_module)
+        _top_module = this;
+    _modules.push_back(this);
+}
+
+void
+Module::pop()
+{
+    panic_if(_modules.size(), "Popping from empty module list.\n");
+    panic_if(_modules.back() != this,
+            "Popping module which isn't at the end of the module list.\n");
+}
+
+Module *
+topModule()
+{
+    return _top_module;
+}
+
+} // namespace SystemC
diff --git a/src/systemc/core/module.hh b/src/systemc/core/module.hh
new file mode 100644
index 0000000..56e125e
--- /dev/null
+++ b/src/systemc/core/module.hh
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2018 Google, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Gabe Black
+ */
+
+#ifndef __SYSTEMC_CORE_MODULE_HH__
+#define __SYSTEMC_CORE_MODULE_HH__
+
+namespace SystemC
+{
+
+class Module
+{
+  private:
+    const char *_name;
+
+  public:
+    Module(const char *name) : _name(name) {}
+
+    const char *name() { return _name; }
+
+    void push();
+    void pop();
+};
+
+extern Module *topModule();
+
+} // namespace SystemC
+
+namespace sc_gem5
+{
+
+using SystemC::Module;
+
+} // namespace sc_gem5
+
+#endif  //__SYSTEMC_CORE_MODULE_HH__
diff --git a/src/systemc/core/sc_module_name.cc b/src/systemc/core/sc_module_name.cc
index 2646d43..b55e500 100644
--- a/src/systemc/core/sc_module_name.cc
+++ b/src/systemc/core/sc_module_name.cc
@@ -29,25 +29,26 @@
 
 
 #include "base/logging.hh"
+#include "systemc/core/module.hh"
 #include "systemc/ext/core/sc_module_name.hh"
 
 namespace sc_core
 {
 
 sc_module_name::sc_module_name(const char *name) :
-    _name(name), _on_the_stack(true)
+    _name(name), _gem5_module(new SystemC::Module(name)), _on_the_stack(true)
 {
-    warn("%s: Module name not added to stack.\n", __PRETTY_FUNCTION__);
+    _gem5_module->push();
 }
 
 sc_module_name::sc_module_name(const sc_module_name &other) :
-    _name(other._name), _on_the_stack(false)
+    _name(other._name), _gem5_module(other._gem5_module), _on_the_stack(false)
 {}
 
 sc_module_name::~sc_module_name()
 {
     if (_on_the_stack) {
-        warn("%s: Module name not removed from stack.\n", __PRETTY_FUNCTION__);
+        _gem5_module->pop();
     }
 }
 
diff --git a/src/systemc/ext/core/sc_module_name.hh b/src/systemc/ext/core/sc_module_name.hh
index 7ae2fd6..8b2ce45 100644
--- a/src/systemc/ext/core/sc_module_name.hh
+++ b/src/systemc/ext/core/sc_module_name.hh
@@ -30,6 +30,13 @@
 #ifndef __SYSTEMC_EXT_CORE_SC_MODULE_NAME_HH__
 #define __SYSTEMC_EXT_CORE_SC_MODULE_NAME_HH__
 
+namespace sc_gem5
+{
+
+class Module;
+
+} // namespace sc_gem5
+
 namespace sc_core
 {
 
@@ -44,6 +51,7 @@
 
   private:
     const char *_name;
+    sc_gem5::Module *_gem5_module;
     bool _on_the_stack;
 
     // Disabled
