summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2015-11-09 13:44:04 +0000
committerAndreas Sandberg <andreas.sandberg@arm.com>2015-11-09 13:44:04 +0000
commitc62fe43ba9134e62932105313a42d43589c413f8 (patch)
treeb8fc2324e0307147e5098565b60e402936a6be68
parent324bc9771d1f3129aee87ccb73bcf23ea4c3b60e (diff)
downloadgem5-c62fe43ba9134e62932105313a42d43589c413f8.tar.xz
dev: Don't access the platform directly in PCI devices
Cleanup PCI devices to avoid using the PciDevice::platform pointer directly. The PCI-specific functionality provided by the Platform should be accessed through the wrappers in PciDevice.
-rw-r--r--src/dev/copy_engine.cc20
-rw-r--r--src/dev/i8254xGBe.hh2
-rw-r--r--src/dev/pcidev.hh4
-rw-r--r--src/dev/sinic.cc6
4 files changed, 16 insertions, 16 deletions
diff --git a/src/dev/copy_engine.cc b/src/dev/copy_engine.cc
index 646393b8f..dfeaf1218 100644
--- a/src/dev/copy_engine.cc
+++ b/src/dev/copy_engine.cc
@@ -445,14 +445,14 @@ CopyEngine::CopyEngineChannel::fetchDescriptor(Addr address)
anDq();
anBegin("FetchDescriptor");
DPRINTF(DMACopyEngine, "Reading descriptor from at memory location %#x(%#x)\n",
- address, ce->platform->pciToDma(address));
+ address, ce->pciToDma(address));
assert(address);
busy = true;
DPRINTF(DMACopyEngine, "dmaAction: %#x, %d bytes, to addr %#x\n",
- ce->platform->pciToDma(address), sizeof(DmaDesc), curDmaDesc);
+ ce->pciToDma(address), sizeof(DmaDesc), curDmaDesc);
- cePort.dmaAction(MemCmd::ReadReq, ce->platform->pciToDma(address),
+ cePort.dmaAction(MemCmd::ReadReq, ce->pciToDma(address),
sizeof(DmaDesc), &fetchCompleteEvent,
(uint8_t*)curDmaDesc, latBeforeBegin);
lastDescriptorAddr = address;
@@ -495,8 +495,8 @@ CopyEngine::CopyEngineChannel::readCopyBytes()
anBegin("ReadCopyBytes");
DPRINTF(DMACopyEngine, "Reading %d bytes from buffer to memory location %#x(%#x)\n",
curDmaDesc->len, curDmaDesc->dest,
- ce->platform->pciToDma(curDmaDesc->src));
- cePort.dmaAction(MemCmd::ReadReq, ce->platform->pciToDma(curDmaDesc->src),
+ ce->pciToDma(curDmaDesc->src));
+ cePort.dmaAction(MemCmd::ReadReq, ce->pciToDma(curDmaDesc->src),
curDmaDesc->len, &readCompleteEvent, copyBuffer, 0);
}
@@ -516,9 +516,9 @@ CopyEngine::CopyEngineChannel::writeCopyBytes()
anBegin("WriteCopyBytes");
DPRINTF(DMACopyEngine, "Writing %d bytes from buffer to memory location %#x(%#x)\n",
curDmaDesc->len, curDmaDesc->dest,
- ce->platform->pciToDma(curDmaDesc->dest));
+ ce->pciToDma(curDmaDesc->dest));
- cePort.dmaAction(MemCmd::WriteReq, ce->platform->pciToDma(curDmaDesc->dest),
+ cePort.dmaAction(MemCmd::WriteReq, ce->pciToDma(curDmaDesc->dest),
curDmaDesc->len, &writeCompleteEvent, copyBuffer, 0);
ce->bytesCopied[channelId] += curDmaDesc->len;
@@ -585,10 +585,10 @@ CopyEngine::CopyEngineChannel::writeCompletionStatus()
anBegin("WriteCompletionStatus");
DPRINTF(DMACopyEngine, "Writing completion status %#x to address %#x(%#x)\n",
completionDataReg, cr.completionAddr,
- ce->platform->pciToDma(cr.completionAddr));
+ ce->pciToDma(cr.completionAddr));
cePort.dmaAction(MemCmd::WriteReq,
- ce->platform->pciToDma(cr.completionAddr),
+ ce->pciToDma(cr.completionAddr),
sizeof(completionDataReg), &statusCompleteEvent,
(uint8_t*)&completionDataReg, latAfterCompletion);
}
@@ -607,7 +607,7 @@ CopyEngine::CopyEngineChannel::fetchNextAddr(Addr address)
DPRINTF(DMACopyEngine, "Fetching next address...\n");
busy = true;
cePort.dmaAction(MemCmd::ReadReq,
- ce->platform->pciToDma(address + offsetof(DmaDesc, next)),
+ ce->pciToDma(address + offsetof(DmaDesc, next)),
sizeof(Addr), &addrCompleteEvent,
(uint8_t*)curDmaDesc + offsetof(DmaDesc, next), 0);
}
diff --git a/src/dev/i8254xGBe.hh b/src/dev/i8254xGBe.hh
index f1802ab24..f46bf51d3 100644
--- a/src/dev/i8254xGBe.hh
+++ b/src/dev/i8254xGBe.hh
@@ -263,7 +263,7 @@ class IGbE : public EtherDevice
EthPacketPtr pktPtr;
/** Shortcut for DMA address translation */
- Addr pciToDma(Addr a) { return igbe->platform->pciToDma(a); }
+ Addr pciToDma(Addr a) { return igbe->pciToDma(a); }
public:
/** Annotate sm*/
diff --git a/src/dev/pcidev.hh b/src/dev/pcidev.hh
index 284b64f09..0afcba154 100644
--- a/src/dev/pcidev.hh
+++ b/src/dev/pcidev.hh
@@ -190,8 +190,10 @@ class PciDevice : public DmaDevice
return true;
}
- protected:
+ private:
Platform *platform;
+
+ protected:
Tick pioDelay;
Tick configDelay;
PciConfigPort configPort;
diff --git a/src/dev/sinic.cc b/src/dev/sinic.cc
index e2b9e28fb..18642efb7 100644
--- a/src/dev/sinic.cc
+++ b/src/dev/sinic.cc
@@ -871,8 +871,7 @@ Device::rxKick()
if (dmaPending() || drainState() != DrainState::Running)
goto exit;
- rxDmaAddr = params()->platform->pciToDma(
- Regs::get_RxData_Addr(vnic->RxData));
+ rxDmaAddr = pciToDma(Regs::get_RxData_Addr(vnic->RxData));
rxDmaLen = min<unsigned>(Regs::get_RxData_Len(vnic->RxData),
vnic->rxPacketBytes);
@@ -1071,8 +1070,7 @@ Device::txKick()
if (dmaPending() || drainState() != DrainState::Running)
goto exit;
- txDmaAddr = params()->platform->pciToDma(
- Regs::get_TxData_Addr(vnic->TxData));
+ txDmaAddr = pciToDma(Regs::get_TxData_Addr(vnic->TxData));
txDmaLen = Regs::get_TxData_Len(vnic->TxData);
txDmaData = txPacket->data + txPacketOffset;
txState = txCopy;