diff options
author | Andrew Schultz <alschult@umich.edu> | 2004-05-06 15:21:07 -0400 |
---|---|---|
committer | Andrew Schultz <alschult@umich.edu> | 2004-05-06 15:21:07 -0400 |
commit | 4a5dcc37bfb26c152c195061fa70c7aa246b5ca6 (patch) | |
tree | 7c74980b640a7ffdca5bf601a0363c62b6b38257 /dev/ide_disk.cc | |
parent | 8538ffdb3682d71c90c33b92b436a2d9cbdc42c3 (diff) | |
download | gem5-4a5dcc37bfb26c152c195061fa70c7aa246b5ca6.tar.xz |
Whole mess'o'changes.. see individual files
arch/alpha/vtophys.cc:
Removed buggy code that tries to fix PAL addresses (may cause problems
while trying to debug in PAL code, but that should do this fix outside
of vtophys)
base/loader/symtab.cc:
base/loader/symtab.hh:
cpu/exetrace.cc:
Changed InstExec traces to always print a symbol name
dev/ide_ctrl.cc:
dev/ide_disk.cc:
Tabs
dev/ide_disk.hh:
Change buffer size
dev/tsunami_pchip.cc:
Fix translatePciToDma to support scatter gather mapping
kern/linux/linux_system.cc:
Force simulator to wait until remote debugger attaches (should be removed
or turned on/off with a flag)
--HG--
extra : convert_revision : 1d08aebe3f448c87a963dd613de3e2e0cff0d48d
Diffstat (limited to 'dev/ide_disk.cc')
-rw-r--r-- | dev/ide_disk.cc | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/dev/ide_disk.cc b/dev/ide_disk.cc index 77e809ee6..f4e73c833 100644 --- a/dev/ide_disk.cc +++ b/dev/ide_disk.cc @@ -55,8 +55,9 @@ using namespace std; IdeDisk::IdeDisk(const string &name, DiskImage *img, PhysicalMemory *phys, int id, int delay) - : SimObject(name), ctrl(NULL), image(img), physmem(phys), dmaTransferEvent(this), - dmaReadWaitEvent(this), dmaWriteWaitEvent(this), dmaPrdReadEvent(this), + : SimObject(name), ctrl(NULL), image(img), physmem(phys), + dmaTransferEvent(this), dmaReadWaitEvent(this), + dmaWriteWaitEvent(this), dmaPrdReadEvent(this), dmaReadEvent(this), dmaWriteEvent(this) { diskDelay = (delay * ticksPerSecond / 1000) / image->size(); @@ -379,8 +380,9 @@ IdeDisk::dmaWriteDone() } // copy the data to memory - Addr dmaAddr = - ctrl->tsunami->pchip->translatePciToDma(curPrd.getBaseAddr()); + Addr dmaAddr = ctrl->tsunami->pchip-> + translatePciToDma(curPrd.getBaseAddr()); + memcpy(physmem->dma_addr(dmaAddr, curPrd.getByteCount()), (void *)dataBuffer, curPrd.getByteCount()); @@ -665,7 +667,9 @@ IdeDisk::updateState(DevAction_t action) cmdReg.status |= STATUS_DRQ_BIT; // put the first two bytes into the data register - memcpy((void *)&cmdReg.data0, (void *)dataBuffer, sizeof(uint16_t)); + memcpy((void *)&cmdReg.data0, (void *)dataBuffer, + sizeof(uint16_t)); + // copy the data into the data buffer if (curCommand == WIN_IDENTIFY) memcpy((void *)dataBuffer, (void *)&driveID, @@ -753,7 +757,9 @@ IdeDisk::updateState(DevAction_t action) break; case Transfer_Data_Out: - if (action == ACT_DATA_WRITE_BYTE || action == ACT_DATA_WRITE_SHORT) { + if (action == ACT_DATA_WRITE_BYTE || + action == ACT_DATA_WRITE_SHORT) { + if (action == ACT_DATA_READ_BYTE) { panic("DEBUG: WRITING DATA ONE BYTE AT A TIME!\n"); } else { @@ -863,7 +869,8 @@ END_INIT_SIM_OBJECT_PARAMS(IdeDisk) CREATE_SIM_OBJECT(IdeDisk) { - return new IdeDisk(getInstanceName(), image, physmem, driveID, disk_delay); + return new IdeDisk(getInstanceName(), image, physmem, driveID, + disk_delay); } REGISTER_SIM_OBJECT("IdeDisk", IdeDisk) |