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_32_39 = (pos >> 32) & 0xff;
|
||||
device->tf.queued48.lba_40_47 = (pos >> 40) & 0xff;
|
||||
device->tf.queued48.command = write ? IDE_CMD_WRITE_DMA_QUEUED
|
||||
: IDE_CMD_READ_DMA_QUEUED;
|
||||
device->tf.queued48.command = write ? IDE_CMD_WRITE_DMA_QUEUED_EXT
|
||||
: IDE_CMD_READ_DMA_QUEUED_EXT;
|
||||
return true;
|
||||
} else {
|
||||
// non-queued LBA48
|
||||
|
||||
@@ -57,7 +57,7 @@ ide_adapter_write_command_block_regs(ide_adapter_channel_info *channel,
|
||||
return B_ERROR;
|
||||
|
||||
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 );
|
||||
pci->write_io_8(device, ioaddr + 1 + i, tf->raw.r[i + 7]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user