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:
OBattler
2017-08-28 22:55:10 +02:00
parent 3cad1672a8
commit 979977b430
3 changed files with 20 additions and 2 deletions

View File

@@ -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);

View File

@@ -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

View File

@@ -173,7 +173,7 @@ void trc_reset(uint8_t val)
port_92_reset(); port_92_reset();
keyboard_at_reset(); keyboard_at_reset();
elcr_reset(); pci_reset();
} }
resetx86(); resetx86();
} }