#include "base/statistics.hh"
#include "config/full_system.hh"
#include "cpu/pc_event.hh"
+#include "enums/MemoryMode.hh"
#include "mem/port.hh"
+#include "params/System.hh"
#include "sim/sim_object.hh"
#if FULL_SYSTEM
#include "kern/system_events.hh"
#if FULL_SYSTEM
class Platform;
-class GDBListener;
-class RemoteGDB;
#endif
+class GDBListener;
+namespace TheISA
+{
+ class RemoteGDB;
+}
class System : public SimObject
{
public:
- enum MemoryMode {
- Invalid=0,
- Atomic,
- Timing
- };
static const char *MemoryModeStrings[3];
-
- MemoryMode getMemoryMode() { assert(memoryMode); return memoryMode; }
+ Enums::MemoryMode
+ getMemoryMode()
+ {
+ assert(memoryMode);
+ return memoryMode;
+ }
/** Change the memory mode of the system. This should only be called by the
* python!!
* @param mode Mode to change to (atomic/timing)
*/
- void setMemoryMode(MemoryMode mode);
+ void setMemoryMode(Enums::MemoryMode mode);
PhysicalMemory *physmem;
PCEventQueue pcEventQueue;
#endif // FULL_SYSTEM
protected:
-
- MemoryMode memoryMode;
+ Enums::MemoryMode memoryMode;
#if FULL_SYSTEM
/**
#endif
public:
-#if FULL_SYSTEM
- std::vector<RemoteGDB *> remoteGDB;
+ std::vector<TheISA::RemoteGDB *> remoteGDB;
std::vector<GDBListener *> gdbListen;
- virtual bool breakpoint() = 0;
-#endif // FULL_SYSTEM
+ bool breakpoint();
public:
- struct Params
- {
- std::string name;
- PhysicalMemory *physmem;
- MemoryMode mem_mode;
-
-#if FULL_SYSTEM
- Tick boot_cpu_frequency;
- std::string boot_osflags;
- uint64_t init_param;
-
- std::string kernel_path;
- std::string readfile;
- std::string symbolfile;
-#endif
- };
+ typedef SystemParams Params;
protected:
Params *_params;