x86: Fixes PCI 8 and 16 byte accesses
[akaros.git] / kern / arch / x86 / pci.h
index 2588f7a..6c1b71d 100644 (file)
@@ -368,19 +368,25 @@ extern struct pcidev_stailq pci_devices;
 
 void pci_init(void);
 void pcidev_print_info(struct pci_device *pcidev, int verbosity);
-uint32_t pci_config_addr(uint8_t bus, uint8_t dev, uint8_t func, uint8_t reg);
+uint32_t pci_config_addr(uint8_t bus, uint8_t dev, uint8_t func, uint32_t reg);
 
 /* Read and write helpers (Eventually, we should have these be statics, since no
  * device should touch PCI config space). */
-uint32_t pci_read32(uint8_t bus, uint8_t dev, uint8_t func, uint8_t offset);
-void pci_write32(uint8_t bus, uint8_t dev, uint8_t func, uint8_t offset,
+uint32_t pci_read32(uint8_t bus, uint8_t dev, uint8_t func, uint32_t offset);
+void pci_write32(uint8_t bus, uint8_t dev, uint8_t func, uint32_t offset,
                  uint32_t value);
-uint32_t pcidev_read32(struct pci_device *pcidev, uint8_t offset);
-void pcidev_write32(struct pci_device *pcidev, uint8_t offset, uint32_t value);
-uint16_t pcidev_read16(struct pci_device *pcidev, uint8_t offset);
-void pcidev_write16(struct pci_device *pcidev, uint8_t offset, uint16_t value);
-uint8_t pcidev_read8(struct pci_device *pcidev, uint8_t offset);
-void pcidev_write8(struct pci_device *pcidev, uint8_t offset, uint8_t value);
+uint32_t pci_read16(uint8_t bus, uint8_t dev, uint8_t func, uint32_t offset);
+void pci_write16(uint8_t bus, uint8_t dev, uint8_t func, uint32_t offset,
+                 uint32_t value);
+uint32_t pci_read8(uint8_t bus, uint8_t dev, uint8_t func, uint32_t offset);
+void pci_write8(uint8_t bus, uint8_t dev, uint8_t func, uint32_t offset,
+                uint32_t value);
+uint32_t pcidev_read32(struct pci_device *pcidev, uint32_t offset);
+void pcidev_write32(struct pci_device *pcidev, uint32_t offset, uint32_t value);
+uint16_t pcidev_read16(struct pci_device *pcidev, uint32_t offset);
+void pcidev_write16(struct pci_device *pcidev, uint32_t offset, uint16_t value);
+uint8_t pcidev_read8(struct pci_device *pcidev, uint32_t offset);
+void pcidev_write8(struct pci_device *pcidev, uint32_t offset, uint8_t value);
 
 /* BAR helpers, some more helpful than others. */
 uint32_t pci_membar_get_sz(struct pci_device *pcidev, int bar);