Revision 9cdd03a7 hw/ide/internal.h
b/hw/ide/internal.h | ||
---|---|---|
379 | 379 |
int mult_sectors; |
380 | 380 |
int identify_set; |
381 | 381 |
uint16_t identify_data[256]; |
382 |
qemu_irq irq; |
|
383 | 382 |
int drive_serial; |
384 | 383 |
char drive_serial_str[21]; |
385 | 384 |
/* ide regs */ |
... | ... | |
399 | 398 |
uint8_t select; |
400 | 399 |
uint8_t status; |
401 | 400 |
|
402 |
/* 0x3f6 command, only meaningful for drive 0 */ |
|
403 |
uint8_t cmd; |
|
404 | 401 |
/* set for lba48 access */ |
405 | 402 |
uint8_t lba48; |
406 | 403 |
BlockDriverState *bs; |
... | ... | |
446 | 443 |
BMDMAState *bmdma; |
447 | 444 |
IDEState ifs[2]; |
448 | 445 |
uint8_t unit; |
446 |
uint8_t cmd; |
|
447 |
qemu_irq irq; |
|
449 | 448 |
}; |
450 | 449 |
|
451 | 450 |
#define BM_STATUS_DMAING 0x01 |
... | ... | |
490 | 489 |
return bmdma->bus->ifs + bmdma->unit; |
491 | 490 |
} |
492 | 491 |
|
493 |
static inline void ide_set_irq(IDEState *s)
|
|
492 |
static inline void ide_set_irq(IDEBus *bus)
|
|
494 | 493 |
{ |
495 |
BMDMAState *bm = s->bus->bmdma;
|
|
496 |
if (!(s->cmd & IDE_CMD_DISABLE_IRQ)) { |
|
494 |
BMDMAState *bm = bus->bmdma; |
|
495 |
if (!(bus->cmd & IDE_CMD_DISABLE_IRQ)) {
|
|
497 | 496 |
if (bm) { |
498 | 497 |
bm->status |= BM_STATUS_INT; |
499 | 498 |
} |
500 |
qemu_irq_raise(s->irq); |
|
499 |
qemu_irq_raise(bus->irq);
|
|
501 | 500 |
} |
502 | 501 |
} |
503 | 502 |
|
Also available in: Unified diff