using namespace std;
-AlphaConsole::AlphaConsole(const string &name, SimConsole *cons, SimpleDisk *d,
- System *system, BaseCPU *cpu, TlaserClock *clock,
- int num_cpus, MemoryController *mmu, Addr a)
- : FunctionalMemory(name), disk(d), console(cons), addr(a)
+AlphaConsole::AlphaConsole(const string &name, SimConsole *cons,
+ SimpleDisk *d, int size, System *system,
+ BaseCPU *cpu, TsunamiIO *clock, int num_cpus,
+ Addr addr, Addr mask, MemoryController *mmu)
+ : MmapDevice(name, addr, mask, mmu), disk(d), console(cons)
{
+ mmu->add_child(this, Range<Addr>(addr, addr + size));
+
consoleData = new uint8_t[size];
memset(consoleData, 0, size);
Param<int> num_cpus;
SimObjectParam<MemoryController *> mmu;
Param<Addr> addr;
- Param<Addr> mask;
SimObjectParam<System *> system;
SimObjectParam<BaseCPU *> cpu;
- SimObjectParam<TlaserClock *> clock;
+ SimObjectParam<TsunamiIO *> clock;
END_DECLARE_SIM_OBJECT_PARAMS(AlphaConsole)
#ifndef __ALPHA_CONSOLE_HH__
#define __ALPHA_CONSOLE_HH__
- #include "sim/host.hh"
+ #include "base/range.hh"
#include "dev/alpha_access.h"
- #include "mem/functional_mem/mmap_device.hh"
+ #include "mem/functional_mem/functional_memory.hh"
+ #include "sim/host.hh"
+#include "dev/tsunami_io.hh"
class BaseCPU;
class SimConsole;
/** the system console (the terminal) is accessable from the console */
SimConsole *console;
+ Addr addr;
+ static const Addr size = 0x80; // equal to sizeof(alpha_access);
+
public:
/** Standard Constructor */
- AlphaConsole(const std::string &name, SimConsole *cons, SimpleDisk *d,
- System *system, BaseCPU *cpu, TlaserClock *clock,
- int num_cpus, MemoryController *mmu, Addr addr);
+ AlphaConsole(const std::string &name, SimConsole *cons,
+ SimpleDisk *d, int size,
+ System *system, BaseCPU *cpu,
+ TsunamiIO *clock, int num_cpus,
+ Addr addr, Addr mask, MemoryController *mmu);
- public:
/**
* memory mapped reads and writes
*/