Merge ktlim@zizzer:/bk/m5 into zamp.eecs.umich.edu:/z/ktlim2/current/m5

--HG--
extra : convert_revision : b868e7920eaa3682c6123651f0c598673ebb7f22
This commit is contained in:
Kevin Lim 2005-05-04 14:41:36 -04:00
commit c03e97b62d
5 changed files with 49 additions and 16 deletions

View file

@ -46,5 +46,6 @@ PacketData::unserialize(const string &base, Checkpoint *cp,
const string &section) const string &section)
{ {
paramIn(cp, section, base + ".length", length); paramIn(cp, section, base + ".length", length);
if (length)
arrayParamIn(cp, section, base + ".data", data, length); arrayParamIn(cp, section, base + ".data", data, length);
} }

View file

@ -94,20 +94,20 @@ Device::Device(Params *p)
{ {
reset(); reset();
if (p->header_bus) { if (p->io_bus) {
pioInterface = newPioInterface(p->name, p->hier, p->header_bus, this, pioInterface = newPioInterface(p->name, p->hier, p->io_bus, this,
&Device::cacheAccess); &Device::cacheAccess);
pioLatency = p->pio_latency * p->header_bus->clockRatio; pioLatency = p->pio_latency * p->io_bus->clockRatio;
if (p->payload_bus) if (p->payload_bus)
dmaInterface = new DMAInterface<Bus>(p->name + ".dma", dmaInterface = new DMAInterface<Bus>(p->name + ".dma", p->io_bus,
p->header_bus, p->payload_bus, p->payload_bus, 1,
1, p->dma_no_allocate); p->dma_no_allocate);
else else
dmaInterface = new DMAInterface<Bus>(p->name + ".dma", dmaInterface = new DMAInterface<Bus>(p->name + ".dma", p->io_bus,
p->header_bus, p->header_bus, p->io_bus, 1,
1, p->dma_no_allocate); p->dma_no_allocate);
} else if (p->payload_bus) { } else if (p->payload_bus) {
pioInterface = newPioInterface(p->name, p->hier, p->payload_bus, this, pioInterface = newPioInterface(p->name, p->hier, p->payload_bus, this,
&Device::cacheAccess); &Device::cacheAccess);
@ -1361,6 +1361,7 @@ REGISTER_SIM_OBJECT("SinicInt", Interface)
BEGIN_DECLARE_SIM_OBJECT_PARAMS(Device) BEGIN_DECLARE_SIM_OBJECT_PARAMS(Device)
Param<Addr> addr;
Param<Tick> cycle_time; Param<Tick> cycle_time;
Param<Tick> tx_delay; Param<Tick> tx_delay;
Param<Tick> rx_delay; Param<Tick> rx_delay;
@ -1369,7 +1370,7 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(Device)
SimObjectParam<PhysicalMemory *> physmem; SimObjectParam<PhysicalMemory *> physmem;
Param<bool> rx_filter; Param<bool> rx_filter;
Param<string> hardware_address; Param<string> hardware_address;
SimObjectParam<Bus*> header_bus; SimObjectParam<Bus*> io_bus;
SimObjectParam<Bus*> payload_bus; SimObjectParam<Bus*> payload_bus;
SimObjectParam<HierParams *> hier; SimObjectParam<HierParams *> hier;
Param<Tick> pio_latency; Param<Tick> pio_latency;
@ -1395,6 +1396,7 @@ END_DECLARE_SIM_OBJECT_PARAMS(Device)
BEGIN_INIT_SIM_OBJECT_PARAMS(Device) BEGIN_INIT_SIM_OBJECT_PARAMS(Device)
INIT_PARAM(addr, "Device Address"),
INIT_PARAM(cycle_time, "State machine cycle time"), INIT_PARAM(cycle_time, "State machine cycle time"),
INIT_PARAM_DFLT(tx_delay, "Transmit Delay", 1000), INIT_PARAM_DFLT(tx_delay, "Transmit Delay", 1000),
INIT_PARAM_DFLT(rx_delay, "Receive Delay", 1000), INIT_PARAM_DFLT(rx_delay, "Receive Delay", 1000),
@ -1404,7 +1406,7 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(Device)
INIT_PARAM_DFLT(rx_filter, "Enable Receive Filter", true), INIT_PARAM_DFLT(rx_filter, "Enable Receive Filter", true),
INIT_PARAM_DFLT(hardware_address, "Ethernet Hardware Address", INIT_PARAM_DFLT(hardware_address, "Ethernet Hardware Address",
"00:99:00:00:00:01"), "00:99:00:00:00:01"),
INIT_PARAM_DFLT(header_bus, "The IO Bus to attach to for headers", NULL), INIT_PARAM_DFLT(io_bus, "The IO Bus to attach to for headers", NULL),
INIT_PARAM_DFLT(payload_bus, "The IO Bus to attach to for payload", NULL), INIT_PARAM_DFLT(payload_bus, "The IO Bus to attach to for payload", NULL),
INIT_PARAM_DFLT(hier, "Hierarchy global variables", &defaultHierParams), INIT_PARAM_DFLT(hier, "Hierarchy global variables", &defaultHierParams),
INIT_PARAM_DFLT(pio_latency, "Programmed IO latency in bus cycles", 1), INIT_PARAM_DFLT(pio_latency, "Programmed IO latency in bus cycles", 1),
@ -1440,7 +1442,7 @@ CREATE_SIM_OBJECT(Device)
params->rx_delay = rx_delay; params->rx_delay = rx_delay;
params->mmu = mmu; params->mmu = mmu;
params->hier = hier; params->hier = hier;
params->header_bus = header_bus; params->io_bus = io_bus;
params->payload_bus = payload_bus; params->payload_bus = payload_bus;
params->pio_latency = pio_latency; params->pio_latency = pio_latency;
params->configSpace = configspace; params->configSpace = configspace;

View file

@ -299,7 +299,7 @@ class Device : public Base
Tick tx_delay; Tick tx_delay;
Tick rx_delay; Tick rx_delay;
HierParams *hier; HierParams *hier;
Bus *header_bus; Bus *io_bus;
Bus *payload_bus; Bus *payload_bus;
Tick pio_latency; Tick pio_latency;
PhysicalMemory *physmem; PhysicalMemory *physmem;

View file

@ -132,8 +132,9 @@ LinuxSystem::LinuxSystem(Params *p)
skipDelayLoopEvent = new LinuxSkipDelayLoopEvent(&pcEventQueue, skipDelayLoopEvent = new LinuxSkipDelayLoopEvent(&pcEventQueue,
"calibrate_delay"); "calibrate_delay");
if (kernelSymtab->findAddress("calibrate_delay", addr)) if (kernelSymtab->findAddress("calibrate_delay", addr)) {
skipDelayLoopEvent->schedule(addr+sizeof(MachInst)); skipDelayLoopEvent->schedule(addr + 3 * sizeof(MachInst));
}
skipCacheProbeEvent = new SkipFuncEvent(&pcEventQueue, skipCacheProbeEvent = new SkipFuncEvent(&pcEventQueue,
"determine_cpu_caches"); "determine_cpu_caches");

View file

@ -89,4 +89,33 @@ simobj NSGigEInt(EtherInt):
type = 'NSGigEInt' type = 'NSGigEInt'
device = Param.NSGigE("Ethernet device of this interface") device = Param.NSGigE("Ethernet device of this interface")
simobj Sinic(PciDevice):
type = 'Sinic'
hardware_address = Param.EthernetAddr(NextEthernetAddr,
"Ethernet Hardware Address")
cycle_time = Param.Frequency('100MHz', "State machine processor frequency")
dma_read_delay = Param.Latency('0us', "fixed delay for dma reads")
dma_read_factor = Param.Latency('0us', "multiplier for dma reads")
dma_write_delay = Param.Latency('0us', "fixed delay for dma writes")
dma_write_factor = Param.Latency('0us', "multiplier for dma writes")
rx_filter = Param.Bool(True, "Enable Receive Filter")
rx_delay = Param.Latency('1us', "Receive Delay")
tx_delay = Param.Latency('1us', "Transmit Delay")
rx_max_copy = Param.MemorySize('16kB', "rx max copy")
tx_max_copy = Param.MemorySize('16kB', "tx max copy")
rx_fifo_size = Param.MemorySize('64kB', "max size of rx fifo")
tx_fifo_size = Param.MemorySize('64kB', "max size of tx fifo")
rx_fifo_threshold = Param.MemorySize('48kB', "rx fifo high threshold")
tx_fifo_threshold = Param.MemorySize('16kB', "tx fifo low threshold")
intr_delay = Param.Latency('0us', "Interrupt Delay in microseconds")
payload_bus = Param.Bus(NULL, "The IO Bus to attach to for payload")
physmem = Param.PhysicalMemory(parent.any, "Physical Memory")
simobj SinicInt(EtherInt):
type = 'SinicInt'
device = Param.Sinic("Ethernet device of this interface")