Diff for /qemu/hw/pci_host.h between versions 1.1.1.4 and 1.1.1.6

version 1.1.1.4, 2018/04/24 17:24:24 version 1.1.1.6, 2018/04/24 18:29:25
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, ...) \  #include "rwhandler.h"
 do { printf("pci_host_data: " fmt , ## __VA_ARGS__); } while (0)  
 #else  
 #define PCI_DPRINTF(fmt, ...)  
 #endif  
   
 typedef struct {  struct PCIHostState {
       SysBusDevice busdev;
       ReadWriteHandler conf_noswap_handler;
       ReadWriteHandler conf_handler;
       ReadWriteHandler data_noswap_handler;
       ReadWriteHandler data_handler;
     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)  void pci_data_write(PCIBus *s, uint32_t addr, uint32_t val, int len);
 {  uint32_t pci_data_read(PCIBus *s, uint32_t addr, int len);
     PCIHostState *s = opaque;  
   /* for mmio */
     PCI_DPRINTF("writeb addr " TARGET_FMT_plx " val %x\n",  int pci_host_conf_register_mmio(PCIHostState *s, int swap);
                 (target_phys_addr_t)addr, val);  int pci_host_data_register_mmio(PCIHostState *s, int swap);
     if (s->config_reg & (1u << 31))  
         pci_data_write(s->bus, s->config_reg | (addr & 3), val, 1);  /* for ioio */
 }  void pci_host_conf_register_ioport(pio_addr_t ioport, PCIHostState *s);
   void pci_host_data_register_ioport(pio_addr_t ioport, PCIHostState *s);
 static void pci_host_data_writew(void* opaque, pci_addr_t addr, uint32_t val)  
 {  #endif /* PCI_HOST_H */
     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;  
 }  
   
 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.4  
changed lines
  Added in v.1.1.1.6


unix.superglobalmegacorp.com