diff options
Diffstat (limited to 'hw/pci_host.h')
-rw-r--r-- | hw/pci_host.h | 90 |
1 files changed, 7 insertions, 83 deletions
diff --git a/hw/pci_host.h b/hw/pci_host.h index 48862b5083..92a35f9b05 100644 --- a/hw/pci_host.h +++ b/hw/pci_host.h @@ -25,97 +25,21 @@ /* Worker routines for a PCI host controller that uses an {address,data} register pair to access PCI configuration space. */ -/* debug PCI */ -//#define DEBUG_PCI +#ifndef PCI_HOST_H +#define PCI_HOST_H #include "sysbus.h" -#ifdef DEBUG_PCI -#define PCI_DPRINTF(fmt, ...) \ -do { printf("pci_host_data: " fmt , ## __VA_ARGS__); } while (0) -#else -#define PCI_DPRINTF(fmt, ...) -#endif - typedef struct { SysBusDevice busdev; uint32_t config_reg; PCIBus *bus; } PCIHostState; -static void pci_host_data_writeb(void* opaque, pci_addr_t addr, uint32_t val) -{ - PCIHostState *s = opaque; - - PCI_DPRINTF("writeb addr " TARGET_FMT_plx " val %x\n", - (target_phys_addr_t)addr, val); - if (s->config_reg & (1u << 31)) - pci_data_write(s->bus, s->config_reg | (addr & 3), val, 1); -} - -static void pci_host_data_writew(void* opaque, pci_addr_t addr, uint32_t val) -{ - PCIHostState *s = opaque; -#ifdef TARGET_WORDS_BIGENDIAN - val = bswap16(val); -#endif - PCI_DPRINTF("writew addr " TARGET_FMT_plx " val %x\n", - (target_phys_addr_t)addr, val); - if (s->config_reg & (1u << 31)) - pci_data_write(s->bus, s->config_reg | (addr & 3), val, 2); -} - -static void pci_host_data_writel(void* opaque, pci_addr_t addr, uint32_t val) -{ - PCIHostState *s = opaque; -#ifdef TARGET_WORDS_BIGENDIAN - val = bswap32(val); -#endif - PCI_DPRINTF("writel addr " TARGET_FMT_plx " val %x\n", - (target_phys_addr_t)addr, val); - if (s->config_reg & (1u << 31)) - pci_data_write(s->bus, s->config_reg, val, 4); -} - -static uint32_t pci_host_data_readb(void* opaque, pci_addr_t addr) -{ - PCIHostState *s = opaque; - uint32_t val; - - if (!(s->config_reg & (1 << 31))) - return 0xff; - val = pci_data_read(s->bus, s->config_reg | (addr & 3), 1); - PCI_DPRINTF("readb addr " TARGET_FMT_plx " val %x\n", - (target_phys_addr_t)addr, val); - return val; -} +/* for mmio */ +int pci_host_data_register_io_memory(PCIHostState *s); -static uint32_t pci_host_data_readw(void* opaque, pci_addr_t addr) -{ - PCIHostState *s = opaque; - uint32_t val; - if (!(s->config_reg & (1 << 31))) - return 0xffff; - val = pci_data_read(s->bus, s->config_reg | (addr & 3), 2); - PCI_DPRINTF("readw addr " TARGET_FMT_plx " val %x\n", - (target_phys_addr_t)addr, val); -#ifdef TARGET_WORDS_BIGENDIAN - val = bswap16(val); -#endif - return val; -} +/* for ioio */ +void pci_host_data_register_ioport(pio_addr_t ioport, PCIHostState *s); -static uint32_t pci_host_data_readl(void* opaque, pci_addr_t addr) -{ - PCIHostState *s = opaque; - uint32_t val; - if (!(s->config_reg & (1 << 31))) - return 0xffffffff; - val = pci_data_read(s->bus, s->config_reg | (addr & 3), 4); - PCI_DPRINTF("readl addr " TARGET_FMT_plx " val %x\n", - (target_phys_addr_t)addr, val); -#ifdef TARGET_WORDS_BIGENDIAN - val = bswap32(val); -#endif - return val; -} +#endif /* PCI_HOST_H */ |