Pass the location of the m5 console backdoor to the console
instead of compiling it into the console version dev/alpha_access.h: move serialization stuff to alpha_console.hh define the ALPHA_ACCESS_BASE in m5 instead of in console.c and have m5 pass the value to the console dev/alpha_console.cc: dev/alpha_console.hh: Move serialization stuff into a derived class of AlphaAccess sim/system.cc: pass the value of ALPHA_ACCESS_BASE to the console code via the m5AlphaAccess console variable. --HG-- extra : convert_revision : 0ea4ba239f03d6dad51a6efae0385aa543064117
This commit is contained in:
parent
769234f69e
commit
d172447a7a
4 changed files with 34 additions and 15 deletions
|
@ -33,15 +33,17 @@
|
|||
* System Console Memory Mapped Register Definition
|
||||
*/
|
||||
|
||||
#define ALPHA_ACCESS_VERSION (1302)
|
||||
#define ALPHA_ACCESS_VERSION (1303)
|
||||
|
||||
#ifndef CONSOLE
|
||||
#include <iosfwd>
|
||||
#include <string>
|
||||
class Checkpoint;
|
||||
#else
|
||||
#ifdef CONSOLE
|
||||
typedef unsigned uint32_t;
|
||||
typedef unsigned long uint64_t;
|
||||
#else
|
||||
#ifdef ALPHA_TLASER
|
||||
#define ALPHA_ACCESS_BASE ULL(0xfffffc8000a00000)
|
||||
#else
|
||||
#define ALPHA_ACCESS_BASE ULL(0xfffffd0200000000)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// This structure hacked up from simos
|
||||
|
@ -74,11 +76,6 @@ struct AlphaAccess
|
|||
uint64_t bootStrapImpure; // 70:
|
||||
uint32_t bootStrapCPU; // 78:
|
||||
uint32_t align2; // 7C: Dummy placeholder for alignment
|
||||
|
||||
#ifndef CONSOLE
|
||||
void serialize(std::ostream &os);
|
||||
void unserialize(Checkpoint *cp, const std::string §ion);
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif // __ALPHA_ACCESS_H__
|
||||
|
|
|
@ -69,7 +69,7 @@ AlphaConsole::AlphaConsole(const string &name, SimConsole *cons, SimpleDisk *d,
|
|||
pioInterface->addAddrRange(RangeSize(addr, size));
|
||||
}
|
||||
|
||||
alphaAccess = new AlphaAccess;
|
||||
alphaAccess = new Access;
|
||||
alphaAccess->last_offset = size - 1;
|
||||
|
||||
alphaAccess->version = ALPHA_ACCESS_VERSION;
|
||||
|
@ -268,7 +268,7 @@ AlphaConsole::cacheAccess(MemReqPtr &req)
|
|||
}
|
||||
|
||||
void
|
||||
AlphaAccess::serialize(ostream &os)
|
||||
AlphaConsole::Access::serialize(ostream &os)
|
||||
{
|
||||
SERIALIZE_SCALAR(last_offset);
|
||||
SERIALIZE_SCALAR(version);
|
||||
|
@ -291,7 +291,7 @@ AlphaAccess::serialize(ostream &os)
|
|||
}
|
||||
|
||||
void
|
||||
AlphaAccess::unserialize(Checkpoint *cp, const std::string §ion)
|
||||
AlphaConsole::Access::unserialize(Checkpoint *cp, const std::string §ion)
|
||||
{
|
||||
UNSERIALIZE_SCALAR(last_offset);
|
||||
UNSERIALIZE_SCALAR(version);
|
||||
|
|
|
@ -72,8 +72,14 @@ class SimpleDisk;
|
|||
class AlphaConsole : public PioDevice
|
||||
{
|
||||
protected:
|
||||
struct Access : public AlphaAccess
|
||||
{
|
||||
void serialize(std::ostream &os);
|
||||
void unserialize(Checkpoint *cp, const std::string §ion);
|
||||
};
|
||||
|
||||
union {
|
||||
AlphaAccess *alphaAccess;
|
||||
Access *alphaAccess;
|
||||
uint8_t *consoleData;
|
||||
};
|
||||
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include "base/loader/symtab.hh"
|
||||
#include "base/remote_gdb.hh"
|
||||
#include "cpu/exec_context.hh"
|
||||
#include "dev/alpha_access.h"
|
||||
#include "kern/kernel_stats.hh"
|
||||
#include "mem/functional/memory_control.hh"
|
||||
#include "mem/functional/physical.hh"
|
||||
|
@ -143,6 +144,21 @@ System::System(Params *p)
|
|||
strcpy(osflags, params->boot_osflags.c_str());
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the m5AlphaAccess pointer in the console
|
||||
*/
|
||||
if (consoleSymtab->findAddress("m5AlphaAccess", addr)) {
|
||||
Addr paddr = vtophys(physmem, addr);
|
||||
uint64_t *m5AlphaAccess =
|
||||
(uint64_t *)physmem->dma_addr(paddr, sizeof(uint64_t));
|
||||
|
||||
if (!m5AlphaAccess)
|
||||
panic("could not translate m5AlphaAccess addr\n");
|
||||
|
||||
*m5AlphaAccess = htoa(ALPHA_ACCESS_BASE);
|
||||
} else
|
||||
panic("could not find m5AlphaAccess\n");
|
||||
|
||||
/**
|
||||
* Set the hardware reset parameter block system type and revision
|
||||
* information to Tsunami.
|
||||
|
|
Loading…
Reference in a new issue