Ported PCI clean-ups from VARCem.

This commit is contained in:
OBattler
2018-10-21 20:27:57 +02:00
parent 480666673e
commit 416bd769c4
2 changed files with 702 additions and 661 deletions

1283
src/pci.c

File diff suppressed because it is too large Load Diff

View File

@@ -1,22 +1,26 @@
void pci_set_irq_routing(int pci_int, int irq);
/*
* 86Box A hypervisor and IBM PC system emulator that specializes in
* running old operating systems and software designed for IBM
* PC systems and compatibles from 1981 through fairly recent
* system designs based on the PCI bus.
*
* This file is part of the 86Box distribution.
*
* Definitions for the PCI handler module.
*
* Version: @(#)pci.h 1.0.0 2018/10/21
*
* Authors: Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
* Sarah Walker, <tommowalker@tommowalker.co.uk>
*
* Copyright 2016-2018 Miran Grca.
* Copyright 2017,2018 Fred N. van Kempen.
* Copyright 2008-2018 Sarah Walker.
*/
#ifndef EMU_PCI_H
# define EMU_PCI_H
void pci_enable_mirq(int mirq);
void pci_set_mirq_routing(int mirq, int irq);
uint8_t pci_use_mirq(uint8_t mirq);
int pci_irq_is_level(int irq);
void pci_set_mirq(uint8_t mirq);
void pci_set_irq(uint8_t card, uint8_t pci_int);
void pci_clear_mirq(uint8_t mirq);
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);
void pci_close(void);
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
@@ -36,22 +40,48 @@ uint8_t pci_add_card(uint8_t add_type, uint8_t (*read)(int func, int addr, void
#define PCI_IRQ_DISABLED -1
enum
{
PCI_CARD_NORMAL = 0,
PCI_CARD_ONBOARD,
PCI_CARD_SPECIAL
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;
extern int pci_burst_time,
pci_nonburst_time;
extern void pci_set_irq_routing(int pci_int, int irq);
extern void pci_enable_mirq(int mirq);
extern void pci_set_mirq_routing(int mirq, int irq);
extern uint8_t pci_use_mirq(uint8_t mirq);
extern int pci_irq_is_level(int irq);
extern void pci_set_mirq(uint8_t mirq);
extern void pci_set_irq(uint8_t card, uint8_t pci_int);
extern void pci_clear_mirq(uint8_t mirq);
extern void pci_clear_irq(uint8_t card, uint8_t pci_int);
extern void pci_reset(void);
extern void pci_init(int type);
extern void pci_register_slot(int card, int type,
int inta, int intb, int intc, int intd);
extern void pci_close(void);
extern 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);
extern void trc_init(void);
#endif /*EMU_PCI_H*/