diff options
Diffstat (limited to 'dev/ide_disk.cc')
-rw-r--r-- | dev/ide_disk.cc | 60 |
1 files changed, 29 insertions, 31 deletions
diff --git a/dev/ide_disk.cc b/dev/ide_disk.cc index 555eb023e..0d553fb83 100644 --- a/dev/ide_disk.cc +++ b/dev/ide_disk.cc @@ -211,8 +211,7 @@ IdeDisk::bytesInDmaPage(Addr curAddr, uint32_t bytesLeft) uint16_t IdeDisk::read(const Addr &offset, RegType_t type) { - - uint16_t data; + uint16_t data = 0; DevAction_t action = ACT_NONE; if (type == COMMAND_BLOCK) { @@ -222,34 +221,34 @@ IdeDisk::read(const Addr &offset, RegType_t type) else if (offset == DATA_OFFSET) action = ACT_DATA_READ_SHORT; - switch (offset) { - case DATA_OFFSET: - data = cmdReg.data; - break; - case ERROR_OFFSET: - data = cmdReg.error; - break; - case NSECTOR_OFFSET: - data = cmdReg.sec_count; - break; - case SECTOR_OFFSET: - data = cmdReg.sec_num; - break; - case LCYL_OFFSET: - data = cmdReg.cyl_low; - break; - case HCYL_OFFSET: - data = cmdReg.cyl_high; - break; - case SELECT_OFFSET: - data = cmdReg.drive; - break; - case STATUS_OFFSET: - data = status; - break; - default: - panic("Invalid IDE command register offset: %#x\n", offset); - } + switch (offset) { + case DATA_OFFSET: + data = cmdReg.data; + break; + case ERROR_OFFSET: + data = cmdReg.error; + break; + case NSECTOR_OFFSET: + data = cmdReg.sec_count; + break; + case SECTOR_OFFSET: + data = cmdReg.sec_num; + break; + case LCYL_OFFSET: + data = cmdReg.cyl_low; + break; + case HCYL_OFFSET: + data = cmdReg.cyl_high; + break; + case SELECT_OFFSET: + data = cmdReg.drive; + break; + case STATUS_OFFSET: + data = status; + break; + default: + panic("Invalid IDE command register offset: %#x\n", offset); + } } else if (type == CONTROL_BLOCK) { if (offset != ALTSTAT_OFFSET) @@ -262,7 +261,6 @@ IdeDisk::read(const Addr &offset, RegType_t type) updateState(action); return data; - } void |