diff options
author | Nathan Binkert <binkertn@umich.edu> | 2005-11-20 16:57:53 -0500 |
---|---|---|
committer | Nathan Binkert <binkertn@umich.edu> | 2005-11-20 16:57:53 -0500 |
commit | 12d903a650a91798eae2389e70f7d4471d130919 (patch) | |
tree | 625b9e1a80405e63298e00aa12855231f502ab06 /dev/sinic.cc | |
parent | ccae5838fd4ec3b6aa27024beb24e231f6d3c63a (diff) | |
download | gem5-12d903a650a91798eae2389e70f7d4471d130919.tar.xz |
io_bus is split out into pio_bus and dma_bus so that any device
can specify either independently.
python/m5/objects/Device.py:
io_bus is split out into pio_bus and dma_bus so that any device
can specify either independently.
dma_bus defaults to point to whatever pio_bus uses.
--HG--
extra : convert_revision : d35d5374d0bf592f6b5df465c05203577b8b8763
Diffstat (limited to 'dev/sinic.cc')
-rw-r--r-- | dev/sinic.cc | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/dev/sinic.cc b/dev/sinic.cc index 1a1456e5f..f03841ecd 100644 --- a/dev/sinic.cc +++ b/dev/sinic.cc @@ -93,31 +93,25 @@ Device::Device(Params *p) { reset(); - if (p->io_bus) { - pioInterface = newPioInterface(p->name + ".pio", p->hier, p->io_bus, + if (p->pio_bus) { + pioInterface = newPioInterface(p->name + ".pio", p->hier, p->pio_bus, this, &Device::cacheAccess); + pioLatency = p->pio_latency * p->pio_bus->clockRate; + } - pioLatency = p->pio_latency * p->io_bus->clockRate; - + if (p->header_bus) { if (p->payload_bus) - dmaInterface = new DMAInterface<Bus>(p->name + ".dma", p->io_bus, + dmaInterface = new DMAInterface<Bus>(p->name + ".dma", + p->header_bus, p->payload_bus, 1, p->dma_no_allocate); else - dmaInterface = new DMAInterface<Bus>(p->name + ".dma", p->io_bus, - p->io_bus, 1, + dmaInterface = new DMAInterface<Bus>(p->name + ".dma", + p->header_bus, + p->header_bus, 1, p->dma_no_allocate); - } else if (p->payload_bus) { - pioInterface = newPioInterface(p->name + ".pio", p->hier, - p->payload_bus, this, - &Device::cacheAccess); - - pioLatency = p->pio_latency * p->payload_bus->clockRate; - - dmaInterface = new DMAInterface<Bus>(p->name + ".dma", p->payload_bus, - p->payload_bus, 1, - p->dma_no_allocate); - } + } else if (p->payload_bus) + panic("must define a header bus if defining a payload bus"); } Device::~Device() @@ -1438,7 +1432,8 @@ BEGIN_DECLARE_SIM_OBJECT_PARAMS(Device) Param<uint32_t> pci_func; SimObjectParam<HierParams *> hier; - SimObjectParam<Bus*> io_bus; + SimObjectParam<Bus*> pio_bus; + SimObjectParam<Bus*> dma_bus; SimObjectParam<Bus*> payload_bus; Param<Tick> dma_read_delay; Param<Tick> dma_read_factor; @@ -1479,7 +1474,8 @@ BEGIN_INIT_SIM_OBJECT_PARAMS(Device) INIT_PARAM(pci_func, "PCI function code"), INIT_PARAM(hier, "Hierarchy global variables"), - INIT_PARAM(io_bus, "The IO Bus to attach to for headers"), + INIT_PARAM(pio_bus, ""), + INIT_PARAM(dma_bus, ""), INIT_PARAM(payload_bus, "The IO Bus to attach to for payload"), INIT_PARAM(dma_read_delay, "fixed delay for dma reads"), INIT_PARAM(dma_read_factor, "multiplier for dma reads"), @@ -1524,7 +1520,8 @@ CREATE_SIM_OBJECT(Device) params->functionNum = pci_func; params->hier = hier; - params->io_bus = io_bus; + params->pio_bus = pio_bus; + params->header_bus = dma_bus; params->payload_bus = payload_bus; params->dma_read_delay = dma_read_delay; params->dma_read_factor = dma_read_factor; |