ATA_SECTOR
((u_int64_t)(ATA_IDX_INB(ch, ATA_SECTOR)) << 24) |
(ATA_IDX_INB(ch, ATA_SECTOR) |
request->u.ata.lba = ATA_IDX_INB(ch, ATA_SECTOR) |
ATA_IDX_OUTB(ch, ATA_SECTOR, request->u.ata.lba >> 24);
ATA_IDX_OUTB(ch, ATA_SECTOR, request->u.ata.lba);
ATA_IDX_OUTB(ch, ATA_SECTOR, request->u.ata.lba);
ch->r_io[ATA_SECTOR].offset = ch_offset + 0x0c;
ATA_IDX_OUTW(ch, ATA_SECTOR, ((request->u.ata.lba >> 16) & 0xff00) |
ATA_IDX_OUTB(ch, ATA_SECTOR, request->u.ata.lba);
bytep[i++] = ATA_PDC_2B | ATA_PDC_WRITE_REG | ATA_SECTOR;
bytep[i++] = ATA_PDC_1B | ATA_PDC_WRITE_REG | ATA_SECTOR;
(ATA_IDX_INB(ch, ATA_SECTOR) << 8) |
ATA_IDX_OUTB(ch, ATA_SECTOR, (value >> 8) & 0xff);
(ATA_IDX_INB(ch, ATA_SECTOR) << 8) |
ch->r_io[ATA_SECTOR].offset = ch_offset + 0x0c;
temp = ATA_IDX_INW(ch, ATA_SECTOR);
request->u.ata.lba = (ATA_IDX_INW(ch, ATA_SECTOR) & 0x00ff) |
ATA_IDX_OUTW(ch, ATA_SECTOR, ((request->u.ata.lba >> 16) & 0xff00) |
ATA_IDX_OUTW(ch, ATA_SECTOR, request->u.ata.lba);
res->lba_low_exp = ATA_INB(ch->r_mem, ATA_SECTOR);
res->lba_low = ATA_INB(ch->r_mem, ATA_SECTOR);
ATA_OUTB(ch->r_mem, ATA_SECTOR, cmd->lba_low_exp);
ATA_OUTB(ch->r_mem, ATA_SECTOR, cmd->lba_low);