Diff for /qemu/hw/pci_host.h between versions 1.1.1.3 and 1.1.1.8

version 1.1.1.3, 2018/04/24 16:53:17 version 1.1.1.8, 2018/04/24 19:28:35
Line 25 Line 25
 /* Worker routines for a PCI host controller that uses an {address,data}  /* Worker routines for a PCI host controller that uses an {address,data}
    register pair to access PCI configuration space.  */     register pair to access PCI configuration space.  */
   
 /* debug PCI */  #ifndef PCI_HOST_H
 //#define DEBUG_PCI  #define PCI_HOST_H
   
 #ifdef DEBUG_PCI  #include "sysbus.h"
 #define PCI_DPRINTF(fmt, args...) \  
 do { printf("pci_host_data: " fmt , ##args); } while (0)  
 #else  
 #define PCI_DPRINTF(fmt, args...)  
 #endif  
   
 typedef struct {  struct PCIHostState {
       SysBusDevice busdev;
       MemoryRegion conf_mem;
       MemoryRegion data_mem;
       MemoryRegion *address_space;
     uint32_t config_reg;      uint32_t config_reg;
     PCIBus *bus;      PCIBus *bus;
 } PCIHostState;  };
   
 static void pci_host_data_writeb(void* opaque, pci_addr_t addr, uint32_t val)  /* common internal helpers for PCI/PCIe hosts, cut off overflows */
 {  void pci_host_config_write_common(PCIDevice *pci_dev, uint32_t addr,
     PCIHostState *s = opaque;                                    uint32_t limit, uint32_t val, uint32_t len);
   uint32_t pci_host_config_read_common(PCIDevice *pci_dev, uint32_t addr,
     PCI_DPRINTF("writeb addr " TARGET_FMT_plx " val %x\n",                                       uint32_t limit, uint32_t len);
                 (target_phys_addr_t)addr, val);  
     if (s->config_reg & (1u << 31))  void pci_data_write(PCIBus *s, uint32_t addr, uint32_t val, int len);
         pci_data_write(s->bus, s->config_reg | (addr & 3), val, 1);  uint32_t pci_data_read(PCIBus *s, uint32_t addr, int len);
 }  
   extern const MemoryRegionOps pci_host_conf_le_ops;
 static void pci_host_data_writew(void* opaque, pci_addr_t addr, uint32_t val)  extern const MemoryRegionOps pci_host_conf_be_ops;
 {  extern const MemoryRegionOps pci_host_data_le_ops;
     PCIHostState *s = opaque;  extern const MemoryRegionOps pci_host_data_be_ops;
 #ifdef TARGET_WORDS_BIGENDIAN  
     val = bswap16(val);  #endif /* PCI_HOST_H */
 #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;  
 }  
   
 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;  
 }  
   
 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;  
 }  

Removed from v.1.1.1.3  
changed lines
  Added in v.1.1.1.8


unix.superglobalmegacorp.com