From 0ac16c5b3e4c15a6ca0514dc11ad4676926eee00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 2 Nov 2010 21:13:30 +0000 Subject: [PATCH] big_endian conversion: this should be more correct git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39279 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/bus_managers/ata/ATADevice.cpp | 3 +-- src/add-ons/kernel/generic/scsi_periph/block.cpp | 4 +--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/add-ons/kernel/bus_managers/ata/ATADevice.cpp b/src/add-ons/kernel/bus_managers/ata/ATADevice.cpp index 4852ca6ea7..8ba6ebace0 100644 --- a/src/add-ons/kernel/bus_managers/ata/ATADevice.cpp +++ b/src/add-ons/kernel/bus_managers/ata/ATADevice.cpp @@ -199,8 +199,7 @@ ATADevice::ReadCapacity16(ATARequest *request) data.block_size = B_HOST_TO_BENDIAN_INT32(fBlockSize); uint64 lastBlock = fTotalSectors - 1; - data.lba = (((uint64)B_HOST_TO_BENDIAN_INT32(lastBlock >> 32)) << 32) - | B_HOST_TO_BENDIAN_INT32(lastBlock); + data.lba = B_HOST_TO_BENDIAN_INT64(lastBlock); TRACE("returning last block: %llu\n", data.lba); copy_sg_data(ccb, 0, ccb->data_length, &data, sizeof(data), false); diff --git a/src/add-ons/kernel/generic/scsi_periph/block.cpp b/src/add-ons/kernel/generic/scsi_periph/block.cpp index 849657873a..6a4b6cb933 100644 --- a/src/add-ons/kernel/generic/scsi_periph/block.cpp +++ b/src/add-ons/kernel/generic/scsi_periph/block.cpp @@ -76,9 +76,7 @@ periph_check_capacity(scsi_periph_device_info *device, scsi_ccb *request) ACQUIRE_BEN(&device->mutex); if (res == B_OK && request->data_resid == 0) { - capacity = (((uint64)B_BENDIAN_TO_HOST_INT32( - capacityLongResult.lba >> 32)) << 32) - | B_BENDIAN_TO_HOST_INT32(capacityLongResult.lba); + capacity = B_BENDIAN_TO_HOST_INT64(capacityLongResult.lba); } else capacity = 0; }