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:
@@ -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]);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user