diff options
author | Ali Saidi <saidi@eecs.umich.edu> | 2006-05-18 12:52:37 -0400 |
---|---|---|
committer | Ali Saidi <saidi@eecs.umich.edu> | 2006-05-18 12:52:37 -0400 |
commit | a5ccef00582dcdb4228493753dafd5aa75022d03 (patch) | |
tree | 54a94a4a8b56d3099e45737121ce93353243a7b0 /dev | |
parent | 935ba67b4fbe595c0496e0230e39cd8ed87b7543 (diff) | |
parent | 2a5cd79986b4a6d0f59e0b83837ff3d3e912dfaf (diff) | |
download | gem5-a5ccef00582dcdb4228493753dafd5aa75022d03.tar.xz |
Merge zizzer:/bk/newmem
into zeep.pool:/z/saidi/work/m5.nm_m5_pull
--HG--
extra : convert_revision : f7ceb689dc5594c746e22a27d6061a767daba261
Diffstat (limited to 'dev')
-rw-r--r-- | dev/ide_disk.cc | 38 | ||||
-rw-r--r-- | dev/sinic.cc | 10 |
2 files changed, 44 insertions, 4 deletions
diff --git a/dev/ide_disk.cc b/dev/ide_disk.cc index 6f4234a1d..909f35c60 100644 --- a/dev/ide_disk.cc +++ b/dev/ide_disk.cc @@ -353,6 +353,36 @@ IdeDisk::doDmaDataRead() dmaReadWaitEvent.schedule(curTick + totalDiskDelay); } +void +IdeDisk::regStats() +{ + using namespace Stats; + dmaReadFullPages + .name(name() + ".dma_read_full_pages") + .desc("Number of full page size DMA reads (not PRD).") + ; + dmaReadBytes + .name(name() + ".dma_read_bytes") + .desc("Number of bytes transfered via DMA reads (not PRD).") + ; + dmaReadTxs + .name(name() + ".dma_read_txs") + .desc("Number of DMA read transactions (not PRD).") + ; + + dmaWriteFullPages + .name(name() + ".dma_write_full_pages") + .desc("Number of full page size DMA writes.") + ; + dmaWriteBytes + .name(name() + ".dma_write_bytes") + .desc("Number of bytes transfered via DMA writes.") + ; + dmaWriteTxs + .name(name() + ".dma_write_txs") + .desc("Number of DMA write transactions.") + ; +} void IdeDisk::doDmaRead() @@ -373,6 +403,10 @@ IdeDisk::doDmaRead() assert(dmaReadCG->complete() < MAX_DMA_SIZE); ctrl->dmaRead(pciToDma(dmaReadCG->addr()), dmaReadCG->size(), &dmaReadWaitEvent, dataBuffer + dmaReadCG->complete()); + dmaReadBytes += dmaReadCG->size(); + dmaReadTxs++; + if (dmaReadCG->size() == TheISA::PageBytes) + dmaReadFullPages++; dmaReadCG->next(); } else { assert(dmaReadCG->done()); @@ -445,6 +479,10 @@ IdeDisk::doDmaWrite() assert(dmaWriteCG->complete() < MAX_DMA_SIZE); ctrl->dmaWrite(pciToDma(dmaWriteCG->addr()), dmaWriteCG->size(), &dmaWriteWaitEvent, dataBuffer + dmaWriteCG->complete()); + dmaWriteBytes += dmaWriteCG->size(); + dmaWriteTxs++; + if (dmaWriteCG->size() == TheISA::PageBytes) + dmaWriteFullPages++; dmaWriteCG->next(); } else { assert(dmaWriteCG->done()); diff --git a/dev/sinic.cc b/dev/sinic.cc index 7f4a7f8f0..f621c1b44 100644 --- a/dev/sinic.cc +++ b/dev/sinic.cc @@ -80,8 +80,9 @@ Base::Base(Params *p) } Device::Device(Params *p) - : Base(p), plat(p->plat), physmem(p->physmem), rxUnique(0), txUnique(0), + : Base(p), rxUnique(0), txUnique(0), virtualRegs(p->virtual_count < 1 ? 1 : p->virtual_count), + rxFifo(p->rx_fifo_size), txFifo(p->tx_fifo_size), rxKickTick(0), txKickTick(0), txEvent(this), rxDmaEvent(this), txDmaEvent(this), dmaReadDelay(p->dma_read_delay), dmaReadFactor(p->dma_read_factor), @@ -461,14 +462,15 @@ Device::write(Packet &pkt) vnic.RxDone = Regs::RxDone_Busy; vnic.RxData = pkt.get<uint64_t>(); - if (Regs::get_RxData_Vaddr(reg64)) { - Addr vaddr = Regs::get_RxData_Addr(reg64); + if (Regs::get_RxData_Vaddr(pkt.get<uint64_t>())) { + panic("vtophys not implemented in newmem"); +/* Addr vaddr = Regs::get_RxData_Addr(reg64); Addr paddr = vtophys(req->xc, vaddr); DPRINTF(EthernetPIO, "write RxData vnic %d (rxunique %d): " "vaddr=%#x, paddr=%#x\n", index, vnic.rxUnique, vaddr, paddr); - vnic.RxData = Regs::set_RxData_Addr(vnic.RxData, paddr); + vnic.RxData = Regs::set_RxData_Addr(vnic.RxData, paddr);*/ } else { DPRINTF(EthernetPIO, "write RxData vnic %d (rxunique %d)\n", index, vnic.rxUnique); |