summaryrefslogtreecommitdiff
path: root/dev/ide_disk.cc
diff options
context:
space:
mode:
authorBenjamin Nash <benash@umich.edu>2005-08-15 17:17:17 -0400
committerBenjamin Nash <benash@umich.edu>2005-08-15 17:17:17 -0400
commitbcc333e92006f52baeef1ae0f94d4765513584d8 (patch)
tree88e3fbd634750cec0e1e4210d62a1f90fd3d2380 /dev/ide_disk.cc
parent49063eb24f8fd2ad010224cc282c55dd5471dd65 (diff)
parentb64eae5e52d9eb60ad498464d076b48cd5ceafe3 (diff)
downloadgem5-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.cc14
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: