diff options
Diffstat (limited to 'src/dev/storage')
-rw-r--r-- | src/dev/storage/ide_disk.cc | 11 | ||||
-rw-r--r-- | src/dev/storage/ide_disk.hh | 18 |
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); |