summaryrefslogtreecommitdiff
path: root/src/sim
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim')
-rw-r--r--src/sim/SConscript3
-rw-r--r--src/sim/arguments.cc1
-rw-r--r--src/sim/arguments.hh1
-rw-r--r--src/sim/byteswap.hh1
-rw-r--r--src/sim/clock_domain.cc1
-rw-r--r--src/sim/clocked_object.hh1
-rw-r--r--src/sim/cxx_config.hh2
-rw-r--r--src/sim/cxx_config_ini.cc2
-rw-r--r--src/sim/cxx_config_ini.hh1
-rw-r--r--src/sim/cxx_manager.cc1
-rw-r--r--src/sim/drain.hh2
-rw-r--r--src/sim/dvfs_handler.cc26
-rw-r--r--src/sim/dvfs_handler.hh26
-rw-r--r--src/sim/eventq.hh1
-rw-r--r--src/sim/fd_entry.hh4
-rw-r--r--src/sim/init_signals.cc1
-rw-r--r--src/sim/insttracer.hh3
-rw-r--r--src/sim/microcode_rom.cc40
-rw-r--r--src/sim/microcode_rom.hh13
-rw-r--r--src/sim/power/mathexpr_powermodel.hh6
-rw-r--r--src/sim/power/power_model.cc2
-rw-r--r--src/sim/power/power_model.hh5
-rw-r--r--src/sim/power/thermal_domain.cc5
-rw-r--r--src/sim/power/thermal_domain.hh4
-rw-r--r--src/sim/power/thermal_entity.hh3
-rw-r--r--src/sim/power/thermal_model.hh1
-rw-r--r--src/sim/probe/probe.cc1
-rw-r--r--src/sim/probe/probe.hh3
-rw-r--r--src/sim/process.cc8
-rw-r--r--src/sim/process.hh10
-rw-r--r--src/sim/process_impl.hh1
-rw-r--r--src/sim/root.cc4
-rw-r--r--src/sim/serialize.hh4
-rw-r--r--src/sim/sim_exit.hh3
-rw-r--r--src/sim/sim_object.cc6
-rw-r--r--src/sim/sim_object.hh9
-rw-r--r--src/sim/simulate.hh3
-rw-r--r--src/sim/stat_register.cc2
-rw-r--r--src/sim/stat_register.hh2
-rw-r--r--src/sim/sub_system.hh1
-rw-r--r--src/sim/syscall_emul.cc2
-rw-r--r--src/sim/syscall_emul.hh27
-rw-r--r--src/sim/syscall_return.hh2
-rw-r--r--src/sim/system.hh3
-rw-r--r--src/sim/ticked_object.cc3
-rw-r--r--src/sim/ticked_object.hh3
-rw-r--r--src/sim/voltage_domain.cc1
-rw-r--r--src/sim/vptr.hh2
48 files changed, 143 insertions, 113 deletions
diff --git a/src/sim/SConscript b/src/sim/SConscript
index 61e4df966..7fec029f1 100644
--- a/src/sim/SConscript
+++ b/src/sim/SConscript
@@ -82,6 +82,9 @@ if env['TARGET_ISA'] != 'null':
Source('syscall_emul.cc')
Source('syscall_desc.cc')
+if env['TARGET_ISA'] != 'x86':
+ Source('microcode_rom.cc')
+
DebugFlag('Checkpoint')
DebugFlag('Config')
DebugFlag('CxxConfig')
diff --git a/src/sim/arguments.cc b/src/sim/arguments.cc
index 5d6ded9ee..4d00d2cf6 100644
--- a/src/sim/arguments.cc
+++ b/src/sim/arguments.cc
@@ -32,7 +32,6 @@
#include "arch/utility.hh"
#include "config/the_isa.hh"
-#include "cpu/thread_context.hh"
Arguments::Data::~Data()
{
diff --git a/src/sim/arguments.hh b/src/sim/arguments.hh
index 165880095..498527ca2 100644
--- a/src/sim/arguments.hh
+++ b/src/sim/arguments.hh
@@ -34,7 +34,6 @@
#include <cassert>
#include <memory>
-#include "base/types.hh"
#include "mem/fs_translating_port_proxy.hh"
class ThreadContext;
diff --git a/src/sim/byteswap.hh b/src/sim/byteswap.hh
index 7e5d6809e..23786bb71 100644
--- a/src/sim/byteswap.hh
+++ b/src/sim/byteswap.hh
@@ -38,7 +38,6 @@
#define __SIM_BYTE_SWAP_HH__
#include "base/bigint.hh"
-#include "base/misc.hh"
#include "base/types.hh"
// This lets us figure out what the byte order of the host system is
diff --git a/src/sim/clock_domain.cc b/src/sim/clock_domain.cc
index 5b05ced9b..46dbcbaac 100644
--- a/src/sim/clock_domain.cc
+++ b/src/sim/clock_domain.cc
@@ -47,6 +47,7 @@
#include <algorithm>
#include <functional>
+#include "base/trace.hh"
#include "debug/ClockDomain.hh"
#include "params/ClockDomain.hh"
#include "params/DerivedClockDomain.hh"
diff --git a/src/sim/clocked_object.hh b/src/sim/clocked_object.hh
index d85d226c9..b89e1ce13 100644
--- a/src/sim/clocked_object.hh
+++ b/src/sim/clocked_object.hh
@@ -51,7 +51,6 @@
#include "base/callback.hh"
#include "base/intmath.hh"
-#include "base/misc.hh"
#include "enums/PwrState.hh"
#include "params/ClockedObject.hh"
#include "sim/core.hh"
diff --git a/src/sim/cxx_config.hh b/src/sim/cxx_config.hh
index da2752b4b..8860e0297 100644
--- a/src/sim/cxx_config.hh
+++ b/src/sim/cxx_config.hh
@@ -57,8 +57,6 @@
#include <string>
#include <vector>
-#include "mem/port.hh"
-#include "params/SimObject.hh"
#include "sim/sim_object.hh"
class CxxConfigParams;
diff --git a/src/sim/cxx_config_ini.cc b/src/sim/cxx_config_ini.cc
index 3df6d72d4..41ad8e6f5 100644
--- a/src/sim/cxx_config_ini.cc
+++ b/src/sim/cxx_config_ini.cc
@@ -39,6 +39,8 @@
#include "sim/cxx_config_ini.hh"
+#include "base/str.hh"
+
bool
CxxIniFile::getParam(const std::string &object_name,
const std::string &param_name,
diff --git a/src/sim/cxx_config_ini.hh b/src/sim/cxx_config_ini.hh
index 9ea61976e..84900a62e 100644
--- a/src/sim/cxx_config_ini.hh
+++ b/src/sim/cxx_config_ini.hh
@@ -47,7 +47,6 @@
#define __SIM_CXX_CONFIG_INI_HH__
#include "base/inifile.hh"
-#include "base/str.hh"
#include "sim/cxx_config.hh"
/** CxxConfigManager interface for using .ini files */
diff --git a/src/sim/cxx_manager.cc b/src/sim/cxx_manager.cc
index a679c6105..bb6c6a807 100644
--- a/src/sim/cxx_manager.cc
+++ b/src/sim/cxx_manager.cc
@@ -43,6 +43,7 @@
#include <sstream>
#include "base/str.hh"
+#include "base/trace.hh"
#include "debug/CxxConfig.hh"
#include "mem/mem_object.hh"
#include "sim/serialize.hh"
diff --git a/src/sim/drain.hh b/src/sim/drain.hh
index 370217bd6..b3145e7ed 100644
--- a/src/sim/drain.hh
+++ b/src/sim/drain.hh
@@ -44,8 +44,6 @@
#include <mutex>
#include <unordered_set>
-#include "base/flags.hh"
-
class Drainable;
#ifndef SWIG // SWIG doesn't support strongly typed enums
diff --git a/src/sim/dvfs_handler.cc b/src/sim/dvfs_handler.cc
index 254720c5f..5ccd50bcd 100644
--- a/src/sim/dvfs_handler.cc
+++ b/src/sim/dvfs_handler.cc
@@ -45,9 +45,11 @@
#include <utility>
#include "base/misc.hh"
+#include "base/trace.hh"
#include "debug/DVFS.hh"
#include "params/DVFSHandler.hh"
#include "sim/clock_domain.hh"
+#include "sim/eventq_impl.hh"
#include "sim/stat_control.hh"
#include "sim/voltage_domain.hh"
@@ -170,6 +172,30 @@ DVFSHandler::UpdateEvent::updatePerfLevel()
d->perfLevel(perfLevelToSet);
}
+double
+DVFSHandler::voltageAtPerfLevel(DomainID domain_id, PerfLevel perf_level) const
+{
+ VoltageDomain *d = findDomain(domain_id)->voltageDomain();
+ assert(d);
+ PerfLevel n = d->numVoltages();
+ if (perf_level < n)
+ return d->voltage(perf_level);
+
+ // Request outside of the range of the voltage domain
+ if (n == 1) {
+ DPRINTF(DVFS, "DVFS: Request for perf-level %i for single-point "\
+ "voltage domain %s. Returning voltage at level 0: %.2f "\
+ "V\n", perf_level, d->name(), d->voltage(0));
+ // Special case for single point voltage domain -> same voltage for
+ // all points
+ return d->voltage(0);
+ }
+
+ warn("DVFSHandler %s reads illegal voltage level %u from "\
+ "VoltageDomain %s. Returning 0 V\n", name(), perf_level, d->name());
+ return 0.;
+}
+
void
DVFSHandler::serialize(CheckpointOut &cp) const
{
diff --git a/src/sim/dvfs_handler.hh b/src/sim/dvfs_handler.hh
index f587f7c25..23ac4bf50 100644
--- a/src/sim/dvfs_handler.hh
+++ b/src/sim/dvfs_handler.hh
@@ -53,13 +53,10 @@
#include <vector>
#include "debug/DVFS.hh"
-#include "params/ClockDomain.hh"
#include "params/DVFSHandler.hh"
-#include "params/VoltageDomain.hh"
#include "sim/clock_domain.hh"
#include "sim/eventq.hh"
#include "sim/sim_object.hh"
-#include "sim/voltage_domain.hh"
/**
* DVFS Handler class, maintains a list of all the domains it can handle.
@@ -156,28 +153,7 @@ class DVFSHandler : public SimObject
* @return Voltage for the requested performance level of the respective
* domain
*/
- double voltageAtPerfLevel(DomainID domain_id, PerfLevel perf_level) const
- {
- VoltageDomain *d = findDomain(domain_id)->voltageDomain();
- assert(d);
- PerfLevel n = d->numVoltages();
- if (perf_level < n)
- return d->voltage(perf_level);
-
- // Request outside of the range of the voltage domain
- if (n == 1) {
- DPRINTF(DVFS, "DVFS: Request for perf-level %i for single-point "\
- "voltage domain %s. Returning voltage at level 0: %.2f "\
- "V\n", perf_level, d->name(), d->voltage(0));
- // Special case for single point voltage domain -> same voltage for
- // all points
- return d->voltage(0);
- }
-
- warn("DVFSHandler %s reads illegal voltage level %u from "\
- "VoltageDomain %s. Returning 0 V\n", name(), perf_level, d->name());
- return 0.;
- }
+ double voltageAtPerfLevel(DomainID domain_id, PerfLevel perf_level) const;
/**
* Get the total number of available performance levels.
diff --git a/src/sim/eventq.hh b/src/sim/eventq.hh
index eeb392153..0b76491ca 100644
--- a/src/sim/eventq.hh
+++ b/src/sim/eventq.hh
@@ -47,7 +47,6 @@
#include <string>
#include "base/flags.hh"
-#include "base/misc.hh"
#include "base/types.hh"
#include "debug/Event.hh"
#include "sim/serialize.hh"
diff --git a/src/sim/fd_entry.hh b/src/sim/fd_entry.hh
index 0cbb769b5..fd68ba50b 100644
--- a/src/sim/fd_entry.hh
+++ b/src/sim/fd_entry.hh
@@ -35,7 +35,9 @@
#include <ostream>
#include <string>
-#include "sim/emul_driver.hh"
+#include "sim/serialize.hh"
+
+class EmulatedDriver;
/**
* FDEntry is used to manage a single file descriptor mapping and metadata
diff --git a/src/sim/init_signals.cc b/src/sim/init_signals.cc
index 81dba189b..5acfe45fd 100644
--- a/src/sim/init_signals.cc
+++ b/src/sim/init_signals.cc
@@ -52,6 +52,7 @@
#include "base/atomicio.hh"
#include "base/cprintf.hh"
+#include "base/misc.hh"
#include "sim/async.hh"
#include "sim/backtrace.hh"
#include "sim/core.hh"
diff --git a/src/sim/insttracer.hh b/src/sim/insttracer.hh
index 7b15d1f91..caeee520d 100644
--- a/src/sim/insttracer.hh
+++ b/src/sim/insttracer.hh
@@ -45,9 +45,8 @@
#define __INSTRECORD_HH__
#include "base/bigint.hh"
-#include "base/trace.hh"
#include "base/types.hh"
-#include "cpu/inst_seq.hh" // for InstSeqNum
+#include "cpu/inst_seq.hh"
#include "cpu/static_inst.hh"
#include "sim/sim_object.hh"
diff --git a/src/sim/microcode_rom.cc b/src/sim/microcode_rom.cc
new file mode 100644
index 000000000..d050919e7
--- /dev/null
+++ b/src/sim/microcode_rom.cc
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2008 The Regents of The University of Michigan
+ * All rights reserved.
+ *
+ * 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 "sim/microcode_rom.hh"
+
+#include "base/misc.hh"
+#include "cpu/static_inst_fwd.hh"
+
+StaticInstPtr
+MicrocodeRom::fetchMicroop(MicroPC micropc, StaticInstPtr curMacroop)
+{
+ panic("ROM based microcode isn't implemented.\n");
+}
diff --git a/src/sim/microcode_rom.hh b/src/sim/microcode_rom.hh
index be10de86b..d45c0870a 100644
--- a/src/sim/microcode_rom.hh
+++ b/src/sim/microcode_rom.hh
@@ -36,17 +36,16 @@
* anything more.
*/
-#include "base/misc.hh"
-#include "cpu/static_inst.hh"
+#include <inttypes.h>
+
+#include "cpu/static_inst_fwd.hh"
+
+typedef uint16_t MicroPC;
class MicrocodeRom
{
public:
- StaticInstPtr
- fetchMicroop(MicroPC micropc, StaticInstPtr curMacroop)
- {
- panic("ROM based microcode isn't implemented.\n");
- }
+ StaticInstPtr fetchMicroop(MicroPC micropc, StaticInstPtr curMacroop);
};
#endif // __SIM_MICROCODE_ROM_HH__
diff --git a/src/sim/power/mathexpr_powermodel.hh b/src/sim/power/mathexpr_powermodel.hh
index 563b1fa7f..5c121c7b6 100644
--- a/src/sim/power/mathexpr_powermodel.hh
+++ b/src/sim/power/mathexpr_powermodel.hh
@@ -42,11 +42,13 @@
#include <unordered_map>
-#include "base/statistics.hh"
#include "params/MathExprPowerModel.hh"
#include "sim/mathexpr.hh"
#include "sim/power/power_model.hh"
-#include "sim/sim_object.hh"
+
+namespace Stats {
+ class Info;
+}
/**
* A Equation power model. The power is represented as a combination
diff --git a/src/sim/power/power_model.cc b/src/sim/power/power_model.cc
index bd06ced70..5f810fe60 100644
--- a/src/sim/power/power_model.cc
+++ b/src/sim/power/power_model.cc
@@ -42,7 +42,7 @@
#include "base/statistics.hh"
#include "params/PowerModel.hh"
#include "params/PowerModelState.hh"
-#include "sim/sim_object.hh"
+#include "sim/clocked_object.hh"
#include "sim/sub_system.hh"
PowerModelState::PowerModelState(const Params *p)
diff --git a/src/sim/power/power_model.hh b/src/sim/power/power_model.hh
index a2ddcea18..976c0543f 100644
--- a/src/sim/power/power_model.hh
+++ b/src/sim/power/power_model.hh
@@ -43,9 +43,10 @@
#include "base/statistics.hh"
#include "params/PowerModel.hh"
#include "params/PowerModelState.hh"
-#include "sim/power/thermal_model.hh"
#include "sim/probe/probe.hh"
-#include "sim/sim_object.hh"
+
+class SimObject;
+class ClockedObject;
/**
* A PowerModelState is an abstract class used as interface to get power
diff --git a/src/sim/power/thermal_domain.cc b/src/sim/power/thermal_domain.cc
index 11f48371e..0724ee80f 100644
--- a/src/sim/power/thermal_domain.cc
+++ b/src/sim/power/thermal_domain.cc
@@ -44,8 +44,11 @@
#include "base/statistics.hh"
#include "debug/ThermalDomain.hh"
#include "params/ThermalDomain.hh"
+#include "sim/clocked_object.hh"
+#include "sim/linear_solver.hh"
#include "sim/power/thermal_model.hh"
-#include "sim/sim_object.hh"
+#include "sim/probe/probe.hh"
+#include "sim/sub_system.hh"
ThermalDomain::ThermalDomain(const Params *p)
: SimObject(p), _initTemperature(p->initial_temperature),
diff --git a/src/sim/power/thermal_domain.hh b/src/sim/power/thermal_domain.hh
index 9236a2437..f385994f8 100644
--- a/src/sim/power/thermal_domain.hh
+++ b/src/sim/power/thermal_domain.hh
@@ -45,11 +45,11 @@
#include "base/statistics.hh"
#include "params/ThermalDomain.hh"
#include "sim/power/thermal_entity.hh"
-#include "sim/probe/probe.hh"
#include "sim/sim_object.hh"
-#include "sim/sub_system.hh"
+class SubSystem;
class ThermalNode;
+template <class T> class ProbePointArg;
/**
* A ThermalDomain is used to group objects under that operate under
diff --git a/src/sim/power/thermal_entity.hh b/src/sim/power/thermal_entity.hh
index 77846b67a..fb703961f 100644
--- a/src/sim/power/thermal_entity.hh
+++ b/src/sim/power/thermal_entity.hh
@@ -40,8 +40,7 @@
#ifndef __SIM_THERMAL_ENTITY_HH__
#define __SIM_THERMAL_ENTITY_HH__
-#include "sim/linear_solver.hh"
-
+class LinearEquation;
class ThermalNode;
/**
diff --git a/src/sim/power/thermal_model.hh b/src/sim/power/thermal_model.hh
index 64f831982..32f34f109 100644
--- a/src/sim/power/thermal_model.hh
+++ b/src/sim/power/thermal_model.hh
@@ -42,7 +42,6 @@
#include <vector>
-#include "base/statistics.hh"
#include "params/ThermalCapacitor.hh"
#include "params/ThermalModel.hh"
#include "params/ThermalReference.hh"
diff --git a/src/sim/probe/probe.cc b/src/sim/probe/probe.cc
index 5f20f7861..f0522bef9 100644
--- a/src/sim/probe/probe.cc
+++ b/src/sim/probe/probe.cc
@@ -40,6 +40,7 @@
#include "sim/probe/probe.hh"
#include "debug/ProbeVerbose.hh"
+#include "params/ProbeListenerObject.hh"
ProbePoint::ProbePoint(ProbeManager *manager, const std::string& _name)
: name(_name)
diff --git a/src/sim/probe/probe.hh b/src/sim/probe/probe.hh
index 8f68c0441..e391f016b 100644
--- a/src/sim/probe/probe.hh
+++ b/src/sim/probe/probe.hh
@@ -64,13 +64,14 @@
#include <string>
#include <vector>
+#include "base/compiler.hh"
#include "base/trace.hh"
-#include "params/ProbeListenerObject.hh"
#include "sim/sim_object.hh"
/** Forward declare the ProbeManager. */
class ProbeManager;
class ProbeListener;
+class ProbeListenerObjectParams;
/**
* Name space containing shared probe point declarations.
diff --git a/src/sim/process.cc b/src/sim/process.cc
index bead9d362..560870c96 100644
--- a/src/sim/process.cc
+++ b/src/sim/process.cc
@@ -48,9 +48,10 @@
#include <fcntl.h>
#include <unistd.h>
-#include <cstdio>
+#include <array>
#include <map>
#include <string>
+#include <vector>
#include "base/intmath.hh"
#include "base/loader/object_file.hh"
@@ -58,14 +59,11 @@
#include "base/statistics.hh"
#include "config/the_isa.hh"
#include "cpu/thread_context.hh"
-#include "mem/multi_level_page_table.hh"
#include "mem/page_table.hh"
#include "mem/se_translating_port_proxy.hh"
#include "params/LiveProcess.hh"
#include "params/Process.hh"
-#include "sim/debug.hh"
-#include "sim/process_impl.hh"
-#include "sim/stats.hh"
+#include "sim/emul_driver.hh"
#include "sim/syscall_desc.hh"
#include "sim/system.hh"
diff --git a/src/sim/process.hh b/src/sim/process.hh
index d9762c052..30852f6af 100644
--- a/src/sim/process.hh
+++ b/src/sim/process.hh
@@ -34,6 +34,7 @@
#define __PROCESS_HH__
#include <array>
+#include <map>
#include <string>
#include <vector>
@@ -44,15 +45,16 @@
#include "mem/se_translating_port_proxy.hh"
#include "sim/fd_entry.hh"
#include "sim/sim_object.hh"
-#include "sim/syscall_return.hh"
-class PageTable;
-struct ProcessParams;
struct LiveProcessParams;
+struct ProcessParams;
+
+class EmulatedDriver;
+class PageTableBase;
class SyscallDesc;
+class SyscallReturn;
class System;
class ThreadContext;
-class EmulatedDriver;
template<class IntType>
struct AuxVector
diff --git a/src/sim/process_impl.hh b/src/sim/process_impl.hh
index b1905834b..3f3d6ae15 100644
--- a/src/sim/process_impl.hh
+++ b/src/sim/process_impl.hh
@@ -36,7 +36,6 @@
#include <vector>
#include "mem/se_translating_port_proxy.hh"
-#include "sim/byteswap.hh"
//This needs to be templated for cases where 32 bit pointers are needed.
template<class AddrType>
diff --git a/src/sim/root.cc b/src/sim/root.cc
index 6787564dd..752632b5e 100644
--- a/src/sim/root.cc
+++ b/src/sim/root.cc
@@ -31,13 +31,13 @@
* Gabe Black
*/
-#include "sim/root.hh"
-
#include "base/misc.hh"
#include "base/trace.hh"
#include "config/the_isa.hh"
#include "debug/TimeSync.hh"
+#include "sim/eventq_impl.hh"
#include "sim/full_system.hh"
+#include "sim/root.hh"
Root *Root::_root = NULL;
diff --git a/src/sim/serialize.hh b/src/sim/serialize.hh
index 4c5e9d79c..1005d5b97 100644
--- a/src/sim/serialize.hh
+++ b/src/sim/serialize.hh
@@ -59,14 +59,12 @@
#include <vector>
#include "base/bitunion.hh"
-#include "base/types.hh"
+class CheckpointIn;
class IniFile;
class Serializable;
-class CheckpointIn;
class SimObject;
class SimObjectResolver;
-class EventQueue;
typedef std::ostream CheckpointOut;
diff --git a/src/sim/sim_exit.hh b/src/sim/sim_exit.hh
index 218db9aeb..55db55ff2 100644
--- a/src/sim/sim_exit.hh
+++ b/src/sim/sim_exit.hh
@@ -35,7 +35,8 @@
#include <string>
#include "base/types.hh"
-#include "sim/core.hh"
+
+Tick curTick();
// forward declaration
class Callback;
diff --git a/src/sim/sim_object.cc b/src/sim/sim_object.cc
index 0ccc36b35..516019a7c 100644
--- a/src/sim/sim_object.cc
+++ b/src/sim/sim_object.cc
@@ -32,17 +32,11 @@
#include "sim/sim_object.hh"
-#include <cassert>
-
-#include "base/callback.hh"
-#include "base/inifile.hh"
#include "base/match.hh"
#include "base/misc.hh"
#include "base/trace.hh"
-#include "base/types.hh"
#include "debug/Checkpoint.hh"
#include "sim/probe/probe.hh"
-#include "sim/stats.hh"
using namespace std;
diff --git a/src/sim/sim_object.hh b/src/sim/sim_object.hh
index 7c1452f01..42a19bbe7 100644
--- a/src/sim/sim_object.hh
+++ b/src/sim/sim_object.hh
@@ -49,21 +49,18 @@
#ifndef __SIM_OBJECT_HH__
#define __SIM_OBJECT_HH__
-#include <iostream>
-#include <list>
-#include <map>
#include <string>
#include <vector>
-#include "enums/MemoryMode.hh"
#include "params/SimObject.hh"
#include "sim/drain.hh"
+#include "sim/eventq.hh"
#include "sim/eventq_impl.hh"
#include "sim/serialize.hh"
-class BaseCPU;
-class Event;
+class EventManager;
class ProbeManager;
+
/**
* Abstract superclass for simulation objects. Represents things that
* correspond to physical components and can be specified via the
diff --git a/src/sim/simulate.hh b/src/sim/simulate.hh
index 85d58e119..e39a2595d 100644
--- a/src/sim/simulate.hh
+++ b/src/sim/simulate.hh
@@ -30,7 +30,8 @@
*/
#include "base/types.hh"
-#include "sim/sim_events.hh"
+
+class GlobalSimLoopExitEvent;
GlobalSimLoopExitEvent *simulate(Tick num_cycles = MaxTick);
extern GlobalSimLoopExitEvent *simulate_limit_event;
diff --git a/src/sim/stat_register.cc b/src/sim/stat_register.cc
index ef7ff8216..371fd9621 100644
--- a/src/sim/stat_register.cc
+++ b/src/sim/stat_register.cc
@@ -39,6 +39,8 @@
#include "sim/stat_register.hh"
+#include "base/statistics.hh"
+
namespace Stats
{
diff --git a/src/sim/stat_register.hh b/src/sim/stat_register.hh
index 7f8c3bcd9..bbe909321 100644
--- a/src/sim/stat_register.hh
+++ b/src/sim/stat_register.hh
@@ -44,8 +44,6 @@
#ifndef __SIM_STAT_REGISTER_H__
#define __SIM_STAT_REGISTER_H__
-#include "base/statistics.hh"
-
namespace Stats
{
diff --git a/src/sim/sub_system.hh b/src/sim/sub_system.hh
index 20a352fc3..e2e75be52 100644
--- a/src/sim/sub_system.hh
+++ b/src/sim/sub_system.hh
@@ -48,7 +48,6 @@
#include <vector>
#include "params/SubSystem.hh"
-#include "sim/power/thermal_domain.hh"
#include "sim/sim_object.hh"
class PowerModel;
diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc
index b34e983a6..56518726c 100644
--- a/src/sim/syscall_emul.cc
+++ b/src/sim/syscall_emul.cc
@@ -34,7 +34,6 @@
#include <fcntl.h>
#include <unistd.h>
-#include <cstdio>
#include <iostream>
#include <string>
@@ -42,7 +41,6 @@
#include "base/chunk_generator.hh"
#include "base/trace.hh"
#include "config/the_isa.hh"
-#include "cpu/base.hh"
#include "cpu/thread_context.hh"
#include "mem/page_table.hh"
#include "sim/process.hh"
diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh
index 4433b5039..31e4c07cd 100644
--- a/src/sim/syscall_emul.hh
+++ b/src/sim/syscall_emul.hh
@@ -62,7 +62,7 @@
/// application on the host machine.
#ifdef __CYGWIN32__
-#include <sys/fcntl.h> // for O_BINARY
+#include <sys/fcntl.h>
#endif
#include <fcntl.h>
@@ -78,8 +78,7 @@
#include <cerrno>
#include <string>
-#include "base/chunk_generator.hh"
-#include "base/intmath.hh" // for RoundUp
+#include "base/intmath.hh"
#include "base/loader/object_file.hh"
#include "base/misc.hh"
#include "base/trace.hh"
@@ -88,13 +87,11 @@
#include "cpu/base.hh"
#include "cpu/thread_context.hh"
#include "mem/page_table.hh"
-#include "sim/byteswap.hh"
#include "sim/emul_driver.hh"
#include "sim/process.hh"
#include "sim/syscall_debug_macros.hh"
#include "sim/syscall_emul_buf.hh"
#include "sim/syscall_return.hh"
-#include "sim/system.hh"
class SyscallDesc;
@@ -156,7 +153,7 @@ SyscallReturn lseekFunc(SyscallDesc *desc, int num,
/// Target _llseek() handler.
SyscallReturn _llseekFunc(SyscallDesc *desc, int num,
- LiveProcess *p, ThreadContext *tc);
+ LiveProcess *p, ThreadContext *tc);
/// Target munmap() handler.
SyscallReturn munmapFunc(SyscallDesc *desc, int num,
@@ -236,39 +233,39 @@ SyscallReturn fcntlFunc(SyscallDesc *desc, int num,
/// Target fcntl64() handler.
SyscallReturn fcntl64Func(SyscallDesc *desc, int num,
- LiveProcess *process, ThreadContext *tc);
+ LiveProcess *process, ThreadContext *tc);
/// Target setuid() handler.
SyscallReturn setuidFunc(SyscallDesc *desc, int num,
- LiveProcess *p, ThreadContext *tc);
+ LiveProcess *p, ThreadContext *tc);
/// Target getpid() handler.
SyscallReturn getpidFunc(SyscallDesc *desc, int num,
- LiveProcess *p, ThreadContext *tc);
+ LiveProcess *p, ThreadContext *tc);
/// Target getuid() handler.
SyscallReturn getuidFunc(SyscallDesc *desc, int num,
- LiveProcess *p, ThreadContext *tc);
+ LiveProcess *p, ThreadContext *tc);
/// Target getgid() handler.
SyscallReturn getgidFunc(SyscallDesc *desc, int num,
- LiveProcess *p, ThreadContext *tc);
+ LiveProcess *p, ThreadContext *tc);
/// Target getppid() handler.
SyscallReturn getppidFunc(SyscallDesc *desc, int num,
- LiveProcess *p, ThreadContext *tc);
+ LiveProcess *p, ThreadContext *tc);
/// Target geteuid() handler.
SyscallReturn geteuidFunc(SyscallDesc *desc, int num,
- LiveProcess *p, ThreadContext *tc);
+ LiveProcess *p, ThreadContext *tc);
/// Target getegid() handler.
SyscallReturn getegidFunc(SyscallDesc *desc, int num,
- LiveProcess *p, ThreadContext *tc);
+ LiveProcess *p, ThreadContext *tc);
/// Target clone() handler.
SyscallReturn cloneFunc(SyscallDesc *desc, int num,
- LiveProcess *p, ThreadContext *tc);
+ LiveProcess *p, ThreadContext *tc);
/// Target access() handler
SyscallReturn accessFunc(SyscallDesc *desc, int num,
diff --git a/src/sim/syscall_return.hh b/src/sim/syscall_return.hh
index fdd740775..1d531daac 100644
--- a/src/sim/syscall_return.hh
+++ b/src/sim/syscall_return.hh
@@ -31,7 +31,7 @@
#ifndef __SIM_SYSCALLRETURN_HH__
#define __SIM_SYSCALLRETURN_HH__
-#include "base/types.hh"
+#include <inttypes.h>
/**
* This class represents the return value from an emulated system call,
diff --git a/src/sim/system.hh b/src/sim/system.hh
index 7e167c75f..2d491e8c3 100644
--- a/src/sim/system.hh
+++ b/src/sim/system.hh
@@ -53,7 +53,6 @@
#include "arch/isa_traits.hh"
#include "base/loader/symtab.hh"
-#include "base/misc.hh"
#include "base/statistics.hh"
#include "config/the_isa.hh"
#include "enums/MemoryMode.hh"
@@ -71,11 +70,9 @@
#include "cpu/pc_event.hh"
#endif
-class BaseCPU;
class BaseRemoteGDB;
class GDBListener;
class ObjectFile;
-class Platform;
class ThreadContext;
class System : public MemObject
diff --git a/src/sim/ticked_object.cc b/src/sim/ticked_object.cc
index ecdb87827..4cd0dc171 100644
--- a/src/sim/ticked_object.cc
+++ b/src/sim/ticked_object.cc
@@ -39,6 +39,9 @@
#include "sim/ticked_object.hh"
+#include "params/TickedObject.hh"
+#include "sim/clocked_object.hh"
+
Ticked::Ticked(ClockedObject &object_,
Stats::Scalar *imported_num_cycles,
Event::Priority priority) :
diff --git a/src/sim/ticked_object.hh b/src/sim/ticked_object.hh
index b21322670..d8b69a320 100644
--- a/src/sim/ticked_object.hh
+++ b/src/sim/ticked_object.hh
@@ -48,9 +48,10 @@
#ifndef __SIM_TICKED_OBJECT_HH__
#define __SIM_TICKED_OBJECT_HH__
-#include "params/TickedObject.hh"
#include "sim/clocked_object.hh"
+class TickedObjectParams;
+
/** Ticked attaches gem5's event queue/scheduler to evaluate
* calls and provides a start/stop interface to ticking.
*
diff --git a/src/sim/voltage_domain.cc b/src/sim/voltage_domain.cc
index 0c5b65d6a..6f32dc7c0 100644
--- a/src/sim/voltage_domain.cc
+++ b/src/sim/voltage_domain.cc
@@ -43,6 +43,7 @@
#include <algorithm>
#include "base/statistics.hh"
+#include "base/trace.hh"
#include "debug/VoltageDomain.hh"
#include "params/VoltageDomain.hh"
#include "sim/sim_object.hh"
diff --git a/src/sim/vptr.hh b/src/sim/vptr.hh
index 658959a90..6eefd5937 100644
--- a/src/sim/vptr.hh
+++ b/src/sim/vptr.hh
@@ -31,8 +31,6 @@
#ifndef __ARCH_ALPHA_VPTR_HH__
#define __ARCH_ALPHA_VPTR_HH__
-#include "arch/isa_traits.hh"
-#include "arch/vtophys.hh"
#include "mem/fs_translating_port_proxy.hh"
class ThreadContext;