Extensively reworked the PCI bus emulation, fixes quite a few bugs, including incorrect IRQ routing for the last two slots on the Intel Advanced/ATX.
This commit is contained in:
33
src/pci.h
33
src/pci.h
@@ -1,17 +1,14 @@
|
||||
void elcr_reset(void);
|
||||
void pci_set_irq_routing(int pci_int, int irq);
|
||||
|
||||
void pci_init(int type);
|
||||
void pci_slot(int card);
|
||||
void pci_add_specific(int card, uint8_t (*read)(int func, int addr, void *priv), void (*write)(int func, int addr, uint8_t val, void *priv), void *priv);
|
||||
int pci_add(uint8_t (*read)(int func, int addr, void *priv), void (*write)(int func, int addr, uint8_t val, void *priv), void *priv);
|
||||
void pci_set_irq_routing(int card, int irq);
|
||||
void pci_set_card_routing(int card, int pci_int);
|
||||
void pci_ide_set_irq(int ide_board, int irq);
|
||||
void pci_set_irq(int card, int pci_int);
|
||||
void pci_set_irq(uint8_t card, uint8_t pci_int);
|
||||
void pci_ide_clear_irq(int ide_board, int irq);
|
||||
void pci_clear_irq(int card, int pci_int);
|
||||
int pci_irq_is_level(int irq);
|
||||
void pci_clear_irq(uint8_t card, uint8_t pci_int);
|
||||
|
||||
void pci_reset(void);
|
||||
void pci_init(int type);
|
||||
void pci_register_slot(int card, int type, int inta, int intb, int intc, int intd);
|
||||
uint8_t pci_add_card(uint8_t add_type, uint8_t (*read)(int func, int addr, void *priv), void (*write)(int func, int addr, uint8_t val, void *priv), void *priv);
|
||||
|
||||
#define PCI_REG_COMMAND 0x04
|
||||
|
||||
@@ -28,4 +25,20 @@ void pci_reset(void);
|
||||
|
||||
#define PCI_IRQ_DISABLED -1
|
||||
|
||||
enum
|
||||
{
|
||||
PCI_CARD_NORMAL = 0,
|
||||
PCI_CARD_ONBOARD,
|
||||
PCI_CARD_SPECIAL
|
||||
};
|
||||
|
||||
|
||||
#define PCI_ADD_NORMAL 0x80
|
||||
#define PCI_ADD_VIDEO 0x81
|
||||
|
||||
extern int pci_burst_time, pci_nonburst_time;
|
||||
|
||||
typedef union {
|
||||
uint32_t addr;
|
||||
uint8_t addr_regs[4];
|
||||
} bar_t;
|
||||
|
||||
Reference in New Issue
Block a user