SIO/PIIX/PIIX3 turbo reset control as well as emulator hard reset now also reset the PCI interrupt hold status in addition to the ELCR.
This commit is contained in:
19
src/pci.c
19
src/pci.c
@@ -282,13 +282,30 @@ void pci_clear_irq(int card, int pci_int)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void pci_reset(void)
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
if (pci_irq_hold[i])
|
||||||
|
{
|
||||||
|
pci_irq_hold[i] = 0;
|
||||||
|
|
||||||
|
picintc(1 << i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
elcr_reset();
|
||||||
|
}
|
||||||
|
|
||||||
void pci_init(int type)
|
void pci_init(int type)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
PCI = 1;
|
PCI = 1;
|
||||||
|
|
||||||
elcr_reset();
|
pci_reset();
|
||||||
|
|
||||||
io_sethandler(0x04d0, 0x0002, elcr_read, NULL, NULL, elcr_write, NULL, NULL, NULL);
|
io_sethandler(0x04d0, 0x0002, elcr_read, NULL, NULL, elcr_write, NULL, NULL, NULL);
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ void pci_set_irq(int card, int pci_int);
|
|||||||
void pci_ide_clear_irq(int ide_board, int irq);
|
void pci_ide_clear_irq(int ide_board, int irq);
|
||||||
void pci_clear_irq(int card, int pci_int);
|
void pci_clear_irq(int card, int pci_int);
|
||||||
int pci_irq_is_level(int irq);
|
int pci_irq_is_level(int irq);
|
||||||
|
void pci_reset(void);
|
||||||
|
|
||||||
#define PCI_REG_COMMAND 0x04
|
#define PCI_REG_COMMAND 0x04
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user