summaryrefslogtreecommitdiff
path: root/src/dev/pci
diff options
context:
space:
mode:
Diffstat (limited to 'src/dev/pci')
-rw-r--r--src/dev/pci/copy_engine.cc14
-rw-r--r--src/dev/pci/copy_engine.hh15
2 files changed, 13 insertions, 16 deletions
diff --git a/src/dev/pci/copy_engine.cc b/src/dev/pci/copy_engine.cc
index 326c51d11..3c7df7d3a 100644
--- a/src/dev/pci/copy_engine.cc
+++ b/src/dev/pci/copy_engine.cc
@@ -81,12 +81,14 @@ CopyEngine::CopyEngine(const Params *p)
CopyEngine::CopyEngineChannel::CopyEngineChannel(CopyEngine *_ce, int cid)
: cePort(_ce, _ce->sys),
ce(_ce), channelId(cid), busy(false), underReset(false),
- refreshNext(false), latBeforeBegin(ce->params()->latBeforeBegin),
- latAfterCompletion(ce->params()->latAfterCompletion),
- completionDataReg(0), nextState(Idle),
- fetchCompleteEvent(this), addrCompleteEvent(this),
- readCompleteEvent(this), writeCompleteEvent(this),
- statusCompleteEvent(this)
+ refreshNext(false), latBeforeBegin(ce->params()->latBeforeBegin),
+ latAfterCompletion(ce->params()->latAfterCompletion),
+ completionDataReg(0), nextState(Idle),
+ fetchCompleteEvent([this]{ fetchDescComplete(); }, name()),
+ addrCompleteEvent([this]{ fetchAddrComplete(); }, name()),
+ readCompleteEvent([this]{ readCopyBytesComplete(); }, name()),
+ writeCompleteEvent([this]{ writeCopyBytesComplete(); }, name()),
+ statusCompleteEvent([this]{ writeStatusComplete(); }, name())
{
cr.status.dma_transfer_status(3);
diff --git a/src/dev/pci/copy_engine.hh b/src/dev/pci/copy_engine.hh
index f548c478b..1ec29f02e 100644
--- a/src/dev/pci/copy_engine.hh
+++ b/src/dev/pci/copy_engine.hh
@@ -115,28 +115,23 @@ class CopyEngine : public PciDevice
private:
void fetchDescriptor(Addr address);
void fetchDescComplete();
- EventWrapper<CopyEngineChannel, &CopyEngineChannel::fetchDescComplete>
- fetchCompleteEvent;
+ EventFunctionWrapper fetchCompleteEvent;
void fetchNextAddr(Addr address);
void fetchAddrComplete();
- EventWrapper<CopyEngineChannel, &CopyEngineChannel::fetchAddrComplete>
- addrCompleteEvent;
+ EventFunctionWrapper addrCompleteEvent;
void readCopyBytes();
void readCopyBytesComplete();
- EventWrapper<CopyEngineChannel, &CopyEngineChannel::readCopyBytesComplete>
- readCompleteEvent;
+ EventFunctionWrapper readCompleteEvent;
void writeCopyBytes();
void writeCopyBytesComplete();
- EventWrapper <CopyEngineChannel, &CopyEngineChannel::writeCopyBytesComplete>
- writeCompleteEvent;
+ EventFunctionWrapper writeCompleteEvent;
void writeCompletionStatus();
void writeStatusComplete();
- EventWrapper <CopyEngineChannel, &CopyEngineChannel::writeStatusComplete>
- statusCompleteEvent;
+ EventFunctionWrapper statusCompleteEvent;
void continueProcessing();