Marcus + Michael:

* Fixed LBA48 access in the ide_adapter. This should fix bug #2700 and probably
  others as well: accessing data beyond the 128 GB barrier on PATA hard drives
  did not work and could potentially screw the first blocks of your hard drive.
* Also fixed queued LBA48 access in the IDE bus manager (this has already been
  removed in the ATA bus manager).
* Whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27994 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2008-10-12 13:29:28 +00:00
parent efc97b9894
commit 04781bed62
2 changed files with 17 additions and 17 deletions
+2 -2
View File
@@ -216,8 +216,8 @@ create_rw_taskfile(ide_device_info *device, ide_qrequest *qrequest,
device->tf.queued48.lba_24_31 = (pos >> 24) & 0xff; device->tf.queued48.lba_24_31 = (pos >> 24) & 0xff;
device->tf.queued48.lba_32_39 = (pos >> 32) & 0xff; device->tf.queued48.lba_32_39 = (pos >> 32) & 0xff;
device->tf.queued48.lba_40_47 = (pos >> 40) & 0xff; device->tf.queued48.lba_40_47 = (pos >> 40) & 0xff;
device->tf.queued48.command = write ? IDE_CMD_WRITE_DMA_QUEUED device->tf.queued48.command = write ? IDE_CMD_WRITE_DMA_QUEUED_EXT
: IDE_CMD_READ_DMA_QUEUED; : IDE_CMD_READ_DMA_QUEUED_EXT;
return true; return true;
} else { } else {
// non-queued LBA48 // non-queued LBA48
@@ -57,7 +57,7 @@ ide_adapter_write_command_block_regs(ide_adapter_channel_info *channel,
return B_ERROR; return B_ERROR;
for (i = 0; i < 7; i++) { for (i = 0; i < 7; i++) {
if (((1 << (i-7)) & mask) != 0) { if (((1 << (i + 6)) & mask) != 0) {
SHOW_FLOW( 4, "%x->HI(%x)", tf->raw.r[i + 7], i ); SHOW_FLOW( 4, "%x->HI(%x)", tf->raw.r[i + 7], i );
pci->write_io_8(device, ioaddr + 1 + i, tf->raw.r[i + 7]); pci->write_io_8(device, ioaddr + 1 + i, tf->raw.r[i + 7]);
} }