* Alpha Console Backdoor Definition
*/
+#include "dev/alpha/backdoor.hh"
+
#include <cstddef>
#include <string>
#include "base/trace.hh"
#include "cpu/base.hh"
#include "cpu/thread_context.hh"
-#include "dev/alpha/backdoor.hh"
+#include "debug/AlphaBackdoor.hh"
+#include "dev/alpha/tsunami.hh"
+#include "dev/alpha/tsunami_cchip.hh"
+#include "dev/alpha/tsunami_io.hh"
#include "dev/platform.hh"
-#include "dev/simple_disk.hh"
+#include "dev/storage/simple_disk.hh"
#include "dev/terminal.hh"
#include "mem/packet.hh"
#include "mem/packet_access.hh"
using namespace AlphaISA;
AlphaBackdoor::AlphaBackdoor(const Params *p)
- : BasicPioDevice(p), disk(p->disk), terminal(p->terminal),
+ : BasicPioDevice(p, sizeof(struct AlphaAccess)),
+ disk(p->disk), terminal(p->terminal),
system(p->system), cpu(p->cpu)
{
-
- pioSize = sizeof(struct AlphaAccess);
-
alphaAccess = new Access();
alphaAccess->last_offset = pioSize - 1;
alphaAccess->kernStart = system->getKernelStart();
alphaAccess->kernEnd = system->getKernelEnd();
alphaAccess->entryPoint = system->getKernelEntry();
- alphaAccess->mem_size = system->physmem->size();
+ alphaAccess->mem_size = system->memSize();
alphaAccess->cpuClock = cpu->frequency() / 1000000; // In MHz
- alphaAccess->intrClockFrequency = params()->platform->intrFrequency();
+ Tsunami *tsunami = dynamic_cast<Tsunami *>(params()->platform);
+ if (!tsunami)
+ fatal("Platform is not Tsunami.\n");
+ alphaAccess->intrClockFrequency = tsunami->io->frequency();
}
Tick
Addr daddr = pkt->getAddr() - pioAddr;
- pkt->allocate();
pkt->makeAtomicResponse();
switch (pkt->getSize())
break;
case offsetof(AlphaAccess, outputChar):
- terminal->out((char)(val & 0xff));
+ terminal->writeData((char)(val & 0xff));
break;
default:
int cpunum = (daddr - offsetof(AlphaAccess, cpuStack)) /
sizeof(alphaAccess->cpuStack[0]);
- warn("%d: Trying to launch CPU number %d!", curTick, cpunum);
+ inform("Launching CPU %d @ %d", cpunum, curTick());
assert(val > 0 && "Must not access primary cpu");
if (cpunum >= 0 && cpunum < 64)
alphaAccess->cpuStack[cpunum] = val;
}
void
-AlphaBackdoor::Access::serialize(ostream &os)
+AlphaBackdoor::Access::serialize(CheckpointOut &cp) const
{
SERIALIZE_SCALAR(last_offset);
SERIALIZE_SCALAR(version);
}
void
-AlphaBackdoor::Access::unserialize(Checkpoint *cp, const std::string §ion)
+AlphaBackdoor::Access::unserialize(CheckpointIn &cp)
{
UNSERIALIZE_SCALAR(last_offset);
UNSERIALIZE_SCALAR(version);
}
void
-AlphaBackdoor::serialize(ostream &os)
+AlphaBackdoor::serialize(CheckpointOut &cp) const
{
- alphaAccess->serialize(os);
+ alphaAccess->serialize(cp);
}
void
-AlphaBackdoor::unserialize(Checkpoint *cp, const std::string §ion)
+AlphaBackdoor::unserialize(CheckpointIn &cp)
{
- alphaAccess->unserialize(cp, section);
+ alphaAccess->unserialize(cp);
}
AlphaBackdoor *