X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fdev%2Falpha%2Fbackdoor.cc;h=5187e5bae16a7048899af0f385435d264fdbb9ab;hb=d6c204c67d42a3cea9d603888ec52a8d8dacf1a3;hp=66f682e66cea9952897babf71da486f61d4fb41d;hpb=d080581db1f9ee4e1e6d07d2b01c13c67908a391;p=gem5.git diff --git a/src/dev/alpha/backdoor.cc b/src/dev/alpha/backdoor.cc index 66f682e66..5187e5bae 100644 --- a/src/dev/alpha/backdoor.cc +++ b/src/dev/alpha/backdoor.cc @@ -35,6 +35,8 @@ * Alpha Console Backdoor Definition */ +#include "dev/alpha/backdoor.hh" + #include #include @@ -44,9 +46,12 @@ #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" @@ -58,12 +63,10 @@ using namespace std; 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; @@ -88,9 +91,12 @@ AlphaBackdoor::startup() 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(params()->platform); + if (!tsunami) + fatal("Platform is not Tsunami.\n"); + alphaAccess->intrClockFrequency = tsunami->io->frequency(); } Tick @@ -106,7 +112,6 @@ AlphaBackdoor::read(PacketPtr pkt) Addr daddr = pkt->getAddr() - pioAddr; - pkt->allocate(); pkt->makeAtomicResponse(); switch (pkt->getSize()) @@ -228,13 +233,13 @@ AlphaBackdoor::write(PacketPtr pkt) 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; @@ -248,7 +253,7 @@ AlphaBackdoor::write(PacketPtr pkt) } void -AlphaBackdoor::Access::serialize(ostream &os) +AlphaBackdoor::Access::serialize(CheckpointOut &cp) const { SERIALIZE_SCALAR(last_offset); SERIALIZE_SCALAR(version); @@ -270,7 +275,7 @@ AlphaBackdoor::Access::serialize(ostream &os) } void -AlphaBackdoor::Access::unserialize(Checkpoint *cp, const std::string §ion) +AlphaBackdoor::Access::unserialize(CheckpointIn &cp) { UNSERIALIZE_SCALAR(last_offset); UNSERIALIZE_SCALAR(version); @@ -292,15 +297,15 @@ AlphaBackdoor::Access::unserialize(Checkpoint *cp, const std::string §ion) } 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 *