Commit 14e12559919195d817d94bc5590a8a26c70e2298
Committed by
Anthony Liguori
1 parent
b7ee1603
qemu/pci: helper routines for pci access
Add inline routines for convenient access to pci devices with correct (little) endianness. Will be used by MSI-X support. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Showing
1 changed file
with
27 additions
and
3 deletions
hw/pci.h
| ... | ... | @@ -215,21 +215,45 @@ PCIBus *pci_bridge_init(PCIBus *bus, int devfn, uint16_t vid, uint16_t did, |
| 215 | 215 | pci_map_irq_fn map_irq, const char *name); |
| 216 | 216 | |
| 217 | 217 | static inline void |
| 218 | +pci_set_word(uint8_t *config, uint16_t val) | |
| 219 | +{ | |
| 220 | + cpu_to_le16wu((uint16_t *)config, val); | |
| 221 | +} | |
| 222 | + | |
| 223 | +static inline uint16_t | |
| 224 | +pci_get_word(uint8_t *config) | |
| 225 | +{ | |
| 226 | + return le16_to_cpupu((uint16_t *)config); | |
| 227 | +} | |
| 228 | + | |
| 229 | +static inline void | |
| 230 | +pci_set_long(uint8_t *config, uint32_t val) | |
| 231 | +{ | |
| 232 | + cpu_to_le32wu((uint32_t *)config, val); | |
| 233 | +} | |
| 234 | + | |
| 235 | +static inline uint32_t | |
| 236 | +pci_get_long(uint8_t *config) | |
| 237 | +{ | |
| 238 | + return le32_to_cpupu((uint32_t *)config); | |
| 239 | +} | |
| 240 | + | |
| 241 | +static inline void | |
| 218 | 242 | pci_config_set_vendor_id(uint8_t *pci_config, uint16_t val) |
| 219 | 243 | { |
| 220 | - cpu_to_le16wu((uint16_t *)&pci_config[PCI_VENDOR_ID], val); | |
| 244 | + pci_set_word(&pci_config[PCI_VENDOR_ID], val); | |
| 221 | 245 | } |
| 222 | 246 | |
| 223 | 247 | static inline void |
| 224 | 248 | pci_config_set_device_id(uint8_t *pci_config, uint16_t val) |
| 225 | 249 | { |
| 226 | - cpu_to_le16wu((uint16_t *)&pci_config[PCI_DEVICE_ID], val); | |
| 250 | + pci_set_word(&pci_config[PCI_DEVICE_ID], val); | |
| 227 | 251 | } |
| 228 | 252 | |
| 229 | 253 | static inline void |
| 230 | 254 | pci_config_set_class(uint8_t *pci_config, uint16_t val) |
| 231 | 255 | { |
| 232 | - cpu_to_le16wu((uint16_t *)&pci_config[PCI_CLASS_DEVICE], val); | |
| 256 | + pci_set_word(&pci_config[PCI_CLASS_DEVICE], val); | |
| 233 | 257 | } |
| 234 | 258 | |
| 235 | 259 | typedef void (*pci_qdev_initfn)(PCIDevice *dev); | ... | ... |