summaryrefslogtreecommitdiff
path: root/src/dev/storage
diff options
context:
space:
mode:
Diffstat (limited to 'src/dev/storage')
-rw-r--r--src/dev/storage/ide_disk.cc11
-rw-r--r--src/dev/storage/ide_disk.hh18
2 files changed, 14 insertions, 15 deletions
diff --git a/src/dev/storage/ide_disk.cc b/src/dev/storage/ide_disk.cc
index de0986e45..08d374fa3 100644
--- a/src/dev/storage/ide_disk.cc
+++ b/src/dev/storage/ide_disk.cc
@@ -68,9 +68,14 @@ using namespace TheISA;
IdeDisk::IdeDisk(const Params *p)
: SimObject(p), ctrl(NULL), image(p->image), diskDelay(p->delay),
- dmaTransferEvent(this), dmaReadCG(NULL), dmaReadWaitEvent(this),
- dmaWriteCG(NULL), dmaWriteWaitEvent(this), dmaPrdReadEvent(this),
- dmaReadEvent(this), dmaWriteEvent(this)
+ dmaTransferEvent([this]{ doDmaTransfer(); }, name()),
+ dmaReadCG(NULL),
+ dmaReadWaitEvent([this]{ doDmaRead(); }, name()),
+ dmaWriteCG(NULL),
+ dmaWriteWaitEvent([this]{ doDmaWrite(); }, name()),
+ dmaPrdReadEvent([this]{ dmaPrdReadDone(); }, name()),
+ dmaReadEvent([this]{ dmaReadDone(); }, name()),
+ dmaWriteEvent([this]{ dmaWriteDone(); }, name())
{
// Reset the device state
reset(p->driveID);
diff --git a/src/dev/storage/ide_disk.hh b/src/dev/storage/ide_disk.hh
index 9214599e9..fa5bb760d 100644
--- a/src/dev/storage/ide_disk.hh
+++ b/src/dev/storage/ide_disk.hh
@@ -306,34 +306,28 @@ class IdeDisk : public SimObject
// DMA stuff
void doDmaTransfer();
- friend class EventWrapper<IdeDisk, &IdeDisk::doDmaTransfer>;
- EventWrapper<IdeDisk, &IdeDisk::doDmaTransfer> dmaTransferEvent;
+ EventFunctionWrapper dmaTransferEvent;
void doDmaDataRead();
void doDmaRead();
ChunkGenerator *dmaReadCG;
- friend class EventWrapper<IdeDisk, &IdeDisk::doDmaRead>;
- EventWrapper<IdeDisk, &IdeDisk::doDmaRead> dmaReadWaitEvent;
+ EventFunctionWrapper dmaReadWaitEvent;
void doDmaDataWrite();
void doDmaWrite();
ChunkGenerator *dmaWriteCG;
- friend class EventWrapper<IdeDisk, &IdeDisk::doDmaWrite>;
- EventWrapper<IdeDisk, &IdeDisk::doDmaWrite> dmaWriteWaitEvent;
+ EventFunctionWrapper dmaWriteWaitEvent;
void dmaPrdReadDone();
- friend class EventWrapper<IdeDisk, &IdeDisk::dmaPrdReadDone>;
- EventWrapper<IdeDisk, &IdeDisk::dmaPrdReadDone> dmaPrdReadEvent;
+ EventFunctionWrapper dmaPrdReadEvent;
void dmaReadDone();
- friend class EventWrapper<IdeDisk, &IdeDisk::dmaReadDone>;
- EventWrapper<IdeDisk, &IdeDisk::dmaReadDone> dmaReadEvent;
+ EventFunctionWrapper dmaReadEvent;
void dmaWriteDone();
- friend class EventWrapper<IdeDisk, &IdeDisk::dmaWriteDone>;
- EventWrapper<IdeDisk, &IdeDisk::dmaWriteDone> dmaWriteEvent;
+ EventFunctionWrapper dmaWriteEvent;
// Disk image read/write
void readDisk(uint32_t sector, uint8_t *data);