diff options
author | Benjamin Nash <benash@umich.edu> | 2005-08-15 17:17:17 -0400 |
---|---|---|
committer | Benjamin Nash <benash@umich.edu> | 2005-08-15 17:17:17 -0400 |
commit | bcc333e92006f52baeef1ae0f94d4765513584d8 (patch) | |
tree | 88e3fbd634750cec0e1e4210d62a1f90fd3d2380 /dev/ide_disk.cc | |
parent | 49063eb24f8fd2ad010224cc282c55dd5471dd65 (diff) | |
parent | b64eae5e52d9eb60ad498464d076b48cd5ceafe3 (diff) | |
download | gem5-bcc333e92006f52baeef1ae0f94d4765513584d8.tar.xz |
Merge zed.eecs.umich.edu:/.automount/fox/y/mserrano/m5_dir/m5
into zed.eecs.umich.edu:/z/benash/bk/m5
dev/ide_ctrl.cc:
dev/ide_ctrl.hh:
dev/ide_disk.cc:
dev/ide_disk.hh:
dev/ns_gige.cc:
dev/pciconfigall.cc:
dev/pcidev.cc:
dev/rtcreg.h:
dev/tsunami_io.cc:
dev/tsunami_io.hh:
dev/uart8250.cc:
dev/uart8250.hh:
python/m5/objects/Tsunami.py:
Merge code.
--HG--
extra : convert_revision : e97d5dbcc051d2061622201265430d359f995d48
Diffstat (limited to 'dev/ide_disk.cc')
-rw-r--r-- | dev/ide_disk.cc | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/dev/ide_disk.cc b/dev/ide_disk.cc index 39eb2e698..bd9aac8ea 100644 --- a/dev/ide_disk.cc +++ b/dev/ide_disk.cc @@ -162,6 +162,8 @@ IdeDisk::reset(int id) // set the device ready bit status = STATUS_DRDY_BIT; + /* The error register must be set to 0x1 on start-up to + indicate that no diagnostic error was detected */ cmdReg.error = 0x1; } @@ -212,16 +214,16 @@ IdeDisk::bytesInDmaPage(Addr curAddr, uint32_t bytesLeft) //// void -IdeDisk::read(const Addr &offset, RegType_t type, uint8_t *data) +IdeDisk::read(const Addr &offset, IdeRegType reg_type, uint8_t *data) { DevAction_t action = ACT_NONE; - switch (type) { + switch (reg_type) { case COMMAND_BLOCK: switch (offset) { // Data transfers occur two bytes at a time case DATA_OFFSET: - memcpy(data, &cmdReg.data, sizeof(uint16_t)); + *(uint16_t*)data = cmdReg.data; action = ACT_DATA_READ_SHORT; break; case ERROR_OFFSET: @@ -265,15 +267,15 @@ IdeDisk::read(const Addr &offset, RegType_t type, uint8_t *data) } void -IdeDisk::write(const Addr &offset, RegType_t type, const uint8_t *data) +IdeDisk::write(const Addr &offset, IdeRegType reg_type, const uint8_t *data) { DevAction_t action = ACT_NONE; - switch (type) { + switch (reg_type) { case COMMAND_BLOCK: switch (offset) { case DATA_OFFSET: - memcpy(&cmdReg.data, data, sizeof(uint16_t)); + cmdReg.data = *(uint16_t*)data; action = ACT_DATA_WRITE_SHORT; break; case FEATURES_OFFSET: |