ATA_CYL_MSB
length = ATA_IDX_INB(ch, ATA_CYL_LSB)|(ATA_IDX_INB(ch, ATA_CYL_MSB)<<8);
msb = ATA_IDX_INB(ch, ATA_CYL_MSB);
msb = ATA_IDX_INB(ch, ATA_CYL_MSB);
ATA_IDX_OUTB(ch, ATA_CYL_MSB, 0);
ATA_IDX_OUTB(ch, ATA_CYL_MSB, request->transfersize >> 8);
((u_int64_t)(ATA_IDX_INB(ch, ATA_CYL_MSB)) << 40);
(ATA_IDX_INB(ch, ATA_CYL_MSB) << 16));
(ATA_IDX_INB(ch, ATA_CYL_MSB) << 16) |
ATA_IDX_OUTB(ch, ATA_CYL_MSB, request->u.ata.lba >> 40);
ATA_IDX_OUTB(ch, ATA_CYL_MSB, request->u.ata.lba >> 16);
ATA_IDX_OUTB(ch, ATA_CYL_MSB, request->u.ata.lba >> 16);
ch->r_io[ATA_CYL_MSB].offset = ch_offset + 0x14;
ATA_IDX_OUTW(ch, ATA_CYL_MSB, ((request->u.ata.lba >> 32) & 0xff00) |
ATA_IDX_OUTB(ch, ATA_CYL_MSB, request->u.ata.lba >> 16);
bytep[i++] = ATA_PDC_2B | ATA_PDC_WRITE_REG | ATA_CYL_MSB;
bytep[i++] = ATA_PDC_1B | ATA_PDC_WRITE_REG | ATA_CYL_MSB;
(ATA_IDX_INB(ch, ATA_CYL_MSB) << 24);
ATA_IDX_OUTB(ch, ATA_CYL_MSB, (value >> 24) & 0xff);
(ATA_IDX_INB(ch, ATA_CYL_MSB) << 24);
ch->r_io[ATA_CYL_MSB].offset = ch_offset + 0x14;
temp = ATA_IDX_INW(ch, ATA_CYL_MSB);
((ATA_IDX_INW(ch, ATA_CYL_MSB) & 0x00ff) << 16) |
ATA_IDX_OUTW(ch, ATA_CYL_MSB, ((request->u.ata.lba >> 32) & 0xff00) |
ATA_IDX_OUTW(ch, ATA_CYL_MSB, request->u.ata.lba >> 16);
res->lba_high_exp = ATA_INB(ch->r_mem, ATA_CYL_MSB);
res->lba_high = ATA_INB(ch->r_mem, ATA_CYL_MSB);
ATA_OUTB(ch->r_mem, ATA_CYL_MSB, cmd->lba_high_exp);
ATA_OUTB(ch->r_mem, ATA_CYL_MSB, cmd->lba_high);
ATA_OUTB(ch->r_mem, ATA_CYL_MSB, 0);
ATA_OUTB(ch->r_mem, ATA_CYL_MSB, ch->transfersize >> 8);
(ATA_INB(ch->r_mem,ATA_CYL_MSB) << 8);