diff options
author | marius <marius@FreeBSD.org> | 2013-02-02 21:57:06 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2013-02-02 21:57:06 +0000 |
commit | fb83414a6ee4316b1c8a79da870c9c6e453535a6 (patch) | |
tree | 172a8c2a5da6ab5738825163bb13f0285c451cc9 /sys/dev/ata/ata-all.h | |
parent | 4b413731c8635fc79b2a2de63e9dbedca8cc7566 (diff) | |
download | FreeBSD-src-fb83414a6ee4316b1c8a79da870c9c6e453535a6.zip FreeBSD-src-fb83414a6ee4316b1c8a79da870c9c6e453535a6.tar.gz |
Improve r238673 to additionally allow for odd-aligned buffers as
passed in by smartd of smartmontools.
While at it, hint the compiler that 32-bit PIO is the most likely
case (idea from Linux) and use bus_{read,write}_stream_2(9) instead
of bus_{read,write}_multi_stream_2(9) for single count reads/writes.
MFC after: 1 week
Diffstat (limited to 'sys/dev/ata/ata-all.h')
-rw-r--r-- | sys/dev/ata/ata-all.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/dev/ata/ata-all.h b/sys/dev/ata/ata-all.h index 3a6710c..28c93f9 100644 --- a/sys/dev/ata/ata-all.h +++ b/sys/dev/ata/ata-all.h @@ -698,6 +698,8 @@ MALLOC_DECLARE(M_ATA); #define ATA_INW(res, offset) \ bus_read_2((res), (offset)) +#define ATA_INW_STRM(res, offset) \ + bus_read_stream_2((res), (offset)) #define ATA_INL(res, offset) \ bus_read_4((res), (offset)) #define ATA_INSW(res, offset, addr, count) \ @@ -712,6 +714,8 @@ MALLOC_DECLARE(M_ATA); bus_write_1((res), (offset), (value)) #define ATA_OUTW(res, offset, value) \ bus_write_2((res), (offset), (value)) +#define ATA_OUTW_STRM(res, offset, value) \ + bus_write_stream_2((res), (offset), (value)) #define ATA_OUTL(res, offset, value) \ bus_write_4((res), (offset), (value)) #define ATA_OUTSW(res, offset, addr, count) \ @@ -729,6 +733,9 @@ MALLOC_DECLARE(M_ATA); #define ATA_IDX_INW(ch, idx) \ ATA_INW(ch->r_io[idx].res, ch->r_io[idx].offset) +#define ATA_IDX_INW_STRM(ch, idx) \ + ATA_INW_STRM(ch->r_io[idx].res, ch->r_io[idx].offset) + #define ATA_IDX_INL(ch, idx) \ ATA_INL(ch->r_io[idx].res, ch->r_io[idx].offset) @@ -750,6 +757,9 @@ MALLOC_DECLARE(M_ATA); #define ATA_IDX_OUTW(ch, idx, value) \ ATA_OUTW(ch->r_io[idx].res, ch->r_io[idx].offset, value) +#define ATA_IDX_OUTW_STRM(ch, idx, value) \ + ATA_OUTW_STRM(ch->r_io[idx].res, ch->r_io[idx].offset, value) + #define ATA_IDX_OUTL(ch, idx, value) \ ATA_OUTL(ch->r_io[idx].res, ch->r_io[idx].offset, value) |