- Whack unused code
- Make the MemoryController use address ranges (via Range) instead of an address and a mask base/remote_gdb.cc: reflect name change dev/alpha_access.h: better include dev/alpha_console.cc: - FunctionalMemory no longer takes care of mapping my address into the proper address space. It must be done locally. - the memory controller no longer uses a mask, but a size, and the size is determined by the device, not the .ini file - fix up address calculations to reflect the removal of a mask - PhysicalMemory::getSize() -> PhysicalMemory::size() dev/alpha_console.hh: - FunctionalMemory no longer takes care of mapping my address into the proper address space. It must be done locally. - the memory controller no longer uses a mask, but a size, and the size is determined by the device, not the .ini file - fix up address calculations to reflect the removal of a mask - get rid of MmapDevice and inherit from FunctionalMemory --HG-- extra : convert_revision : e3a65c9debf6f899632d62c70781cbdc2826616b
This commit is contained in:
parent
087334bfe5
commit
da8a702212
4 changed files with 25 additions and 28 deletions
|
@ -338,7 +338,7 @@ RemoteGDB::acc(Addr va, size_t len)
|
|||
}
|
||||
|
||||
if (va < ALPHA_K1SEG_BASE) {
|
||||
if (va < (ALPHA_K0SEG_BASE + pmem->getSize())) {
|
||||
if (va < (ALPHA_K0SEG_BASE + pmem->size())) {
|
||||
DPRINTF(GDBAcc, "acc: Mapping is valid K0SEG <= "
|
||||
"%#x < K0SEG + size\n", va);
|
||||
return true;
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
#define ALPHA_ACCESS_VERSION (1301) /* CH++*/
|
||||
|
||||
#ifndef CONSOLE
|
||||
#include <ostream>
|
||||
#include <iosfwd>
|
||||
#include <string>
|
||||
class Checkpoint;
|
||||
#endif
|
||||
|
|
|
@ -49,12 +49,13 @@
|
|||
|
||||
using namespace std;
|
||||
|
||||
AlphaConsole::AlphaConsole(const string &name, SimConsole *cons,
|
||||
SimpleDisk *d, int size, System *system,
|
||||
BaseCPU *cpu, TlaserClock *clock, int num_cpus,
|
||||
Addr addr, Addr mask, MemoryController *mmu)
|
||||
: MmapDevice(name, addr, mask, mmu), disk(d), console(cons)
|
||||
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)
|
||||
{
|
||||
mmu->add_child(this, Range<Addr>(addr, addr + size));
|
||||
|
||||
consoleData = new uint8_t[size];
|
||||
memset(consoleData, 0, size);
|
||||
|
||||
|
@ -65,7 +66,7 @@ AlphaConsole::AlphaConsole(const string &name, SimConsole *cons,
|
|||
|
||||
alphaAccess->version = ALPHA_ACCESS_VERSION;
|
||||
alphaAccess->numCPUs = num_cpus;
|
||||
alphaAccess->mem_size = system->physmem->getSize();
|
||||
alphaAccess->mem_size = system->physmem->size();
|
||||
alphaAccess->cpuClock = cpu->getFreq() / 1000000;
|
||||
alphaAccess->intrClockFrequency = clock->frequency();
|
||||
|
||||
|
@ -78,7 +79,8 @@ AlphaConsole::read(MemReqPtr &req, uint8_t *data)
|
|||
memset(data, 0, req->size);
|
||||
uint64_t val;
|
||||
|
||||
Addr daddr = req->paddr & addr_mask;
|
||||
Addr daddr = req->paddr - addr;
|
||||
|
||||
switch (daddr) {
|
||||
case offsetof(AlphaAccess, inputChar):
|
||||
val = console->console_in();
|
||||
|
@ -125,7 +127,7 @@ AlphaConsole::write(MemReqPtr &req, const uint8_t *data)
|
|||
return Machine_Check_Fault;
|
||||
}
|
||||
|
||||
Addr daddr = req->paddr & addr_mask;
|
||||
Addr daddr = req->paddr - addr;
|
||||
ExecContext *other_xc;
|
||||
|
||||
switch (daddr) {
|
||||
|
@ -243,11 +245,9 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(AlphaConsole)
|
|||
|
||||
SimObjectParam<SimConsole *> sim_console;
|
||||
SimObjectParam<SimpleDisk *> disk;
|
||||
Param<int> size;
|
||||
Param<int> num_cpus;
|
||||
SimObjectParam<MemoryController *> mmu;
|
||||
Param<Addr> addr;
|
||||
Param<Addr> mask;
|
||||
SimObjectParam<System *> system;
|
||||
SimObjectParam<BaseCPU *> cpu;
|
||||
SimObjectParam<TlaserClock *> clock;
|
||||
|
@ -258,11 +258,9 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(AlphaConsole)
|
|||
|
||||
INIT_PARAM(sim_console, "The Simulator Console"),
|
||||
INIT_PARAM(disk, "Simple Disk"),
|
||||
INIT_PARAM_DFLT(size, "AlphaConsole size", sizeof(AlphaAccess)),
|
||||
INIT_PARAM_DFLT(num_cpus, "Number of CPU's", 1),
|
||||
INIT_PARAM(mmu, "Memory Controller"),
|
||||
INIT_PARAM(addr, "Device Address"),
|
||||
INIT_PARAM(mask, "Address Mask"),
|
||||
INIT_PARAM(system, "system object"),
|
||||
INIT_PARAM(cpu, "Processor"),
|
||||
INIT_PARAM(clock, "Turbolaser Clock")
|
||||
|
@ -271,10 +269,8 @@ END_INIT_SIM_OBJECT_PARAMS(AlphaConsole)
|
|||
|
||||
CREATE_SIM_OBJECT(AlphaConsole)
|
||||
{
|
||||
return new AlphaConsole(getInstanceName(), sim_console,
|
||||
disk, size, system,
|
||||
cpu, clock, num_cpus,
|
||||
addr, mask, mmu);
|
||||
return new AlphaConsole(getInstanceName(), sim_console, disk,
|
||||
system, cpu, clock, num_cpus, mmu, addr);
|
||||
}
|
||||
|
||||
REGISTER_SIM_OBJECT("AlphaConsole", AlphaConsole)
|
||||
|
|
|
@ -33,9 +33,10 @@
|
|||
#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"
|
||||
|
||||
class BaseCPU;
|
||||
class SimConsole;
|
||||
|
@ -68,7 +69,7 @@ class SimpleDisk;
|
|||
* primarily used doing boot before the kernel has loaded its device
|
||||
* drivers.
|
||||
*/
|
||||
class AlphaConsole : public MmapDevice
|
||||
class AlphaConsole : public FunctionalMemory
|
||||
{
|
||||
protected:
|
||||
union {
|
||||
|
@ -82,15 +83,15 @@ class AlphaConsole : public MmapDevice
|
|||
/** the system console (the terminal) is accessable from the console */
|
||||
SimConsole *console;
|
||||
|
||||
public:
|
||||
/** Standard Constructor */
|
||||
AlphaConsole(const std::string &name, SimConsole *cons,
|
||||
SimpleDisk *d, int size,
|
||||
System *system, BaseCPU *cpu,
|
||||
TlaserClock *clock, int num_cpus,
|
||||
Addr addr, Addr mask, MemoryController *mmu);
|
||||
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);
|
||||
|
||||
/**
|
||||
* memory mapped reads and writes
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue