u16 iobase2 = GET_EBDA(ata.channels[channel].iobase2);
u8 mode = GET_EBDA(ata.devices[biosid].mode);
int iswrite = (cmd->command & ~0x40) == ATA_CMD_WRITE_SECTORS;
-
- irq_enable();
-
u8 current = 0;
u16 count = cmd->sector_count;
u8 status;
return 4;
}
- irq_disable();
-
// Enable interrupts
outb(ATA_CB_DC_HD15, iobase2+ATA_CB_DC);
return 0;
SET_EBDA(ata.trsfsectors,0);
SET_EBDA(ata.trsfbytes,0L);
- irq_enable();
-
// Send command to device
outsw_far(iobase1, MAKE_32_PTR(GET_SEG(SS), (u32)cmdbuf), cmdlen / 2);
u16 segment = regs->es;
u16 offset = regs->bx;
+ irq_enable();
+
u8 status;
u32 lba;
if (nph != nlh || npspt != nlspt) {
, MAKE_32_PTR(segment, offset));
}
+ irq_disable();
+
// Set nb of sector transferred
regs->al = GET_EBDA(ata.trsfsectors);
u16 segment = regs->es;
u16 offset = regs->bx;
+ irq_enable();
u8 status = cdrom_read(device, lba, count*512
, MAKE_32_PTR(segment, offset), before*512);
+ irq_disable();
if (status != 0) {
BX_INFO("int13_harddisk: function %02x, error %02x !\n",regs->ah,status);
regs->al = 0;
return;
}
+ irq_enable();
+
u8 status;
if (type == ATA_TYPE_ATA)
status = ata_cmd_data(device, command, lba, count
status = cdrom_read(device, lba, count*2048
, MAKE_32_PTR(segment, offset), 0);
+ irq_disable();
+
SET_INT13EXT(regs, count, GET_EBDA(ata.trsfsectors));
if (status != 0) {