diff options
author | Andrew Schultz <alschult@umich.edu> | 2004-06-23 15:37:05 -0400 |
---|---|---|
committer | Andrew Schultz <alschult@umich.edu> | 2004-06-23 15:37:05 -0400 |
commit | 06d8f0af5def68e395b58636d5e7d6ca69daa51f (patch) | |
tree | 1039ea31ea32c8b56d19123d087f5c87029cb8da /dev/ide_ctrl.cc | |
parent | 556b2a9098930698b39f296c8d13831f2b91311b (diff) | |
download | gem5-06d8f0af5def68e395b58636d5e7d6ca69daa51f.tar.xz |
Fix to properly shadow the DEV bit in the Drive/Head register so other
disks are properly detected and handled
--HG--
extra : convert_revision : ffc3046deb68458ee2ef6fa5263dc471488abc45
Diffstat (limited to 'dev/ide_ctrl.cc')
-rw-r--r-- | dev/ide_ctrl.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/dev/ide_ctrl.cc b/dev/ide_ctrl.cc index 46a0e8179..4805570d2 100644 --- a/dev/ide_ctrl.cc +++ b/dev/ide_ctrl.cc @@ -192,6 +192,22 @@ IdeController::getDisk(IdeDisk *diskPtr) return -1; } +bool +IdeController::isDiskSelected(IdeDisk *diskPtr) +{ + for (int i = 0; i < 4; i++) { + if ((long)diskPtr == (long)disks[i]) { + // is disk is on primary or secondary channel + int channel = i/2; + // is disk the master or slave + int devID = i%2; + + return (dev[channel] == devID); + } + } + panic("Unable to find disk by pointer!!\n"); +} + //// // Command completion //// |