void qvirtio_pci_set_msix_configuration_vector(QVirtioPCIDevice *d,

                                        QGuestAllocator *alloc, uint16_t entry)

{

    uint16_t vector;

    uint32_t control;

    void *addr;



    g_assert(d->pdev->msix_enabled);

    addr = d->pdev->msix_table + (entry * 16);



    g_assert_cmpint(entry, >=, 0);

    g_assert_cmpint(entry, <, qpci_msix_table_size(d->pdev));

    d->config_msix_entry = entry;



    d->config_msix_data = 0x12345678;

    d->config_msix_addr = guest_alloc(alloc, 4);



    qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_LOWER_ADDR,

                                                    d->config_msix_addr & ~0UL);

    qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_UPPER_ADDR,

                                            (d->config_msix_addr >> 32) & ~0UL);

    qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_DATA, d->config_msix_data);



    control = qpci_io_readl(d->pdev, addr + PCI_MSIX_ENTRY_VECTOR_CTRL);

    qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_VECTOR_CTRL,

                                        control & ~PCI_MSIX_ENTRY_CTRL_MASKBIT);



    qpci_io_writew(d->pdev, d->addr + VIRTIO_MSI_CONFIG_VECTOR, entry);

    vector = qpci_io_readw(d->pdev, d->addr + VIRTIO_MSI_CONFIG_VECTOR);

    g_assert_cmphex(vector, !=, VIRTIO_MSI_NO_VECTOR);

}

void qvirtio_pci_set_msix_configuration_vector(QVirtioPCIDevice *d,

                                        QGuestAllocator *alloc, uint16_t entry)

{

    uint16_t vector;

    uint32_t control;

    void *addr;



    g_assert(d->pdev->msix_enabled);

    addr = d->pdev->msix_table + (entry * 16);



    g_assert_cmpint(entry, >=, 0);

    g_assert_cmpint(entry, <, qpci_msix_table_size(d->pdev));

    d->config_msix_entry = entry;



    d->config_msix_data = 0x12345678;

    d->config_msix_addr = guest_alloc(alloc, 4);



    qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_LOWER_ADDR,

                                                    d->config_msix_addr & ~0UL);

    qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_UPPER_ADDR,

                                            (d->config_msix_addr >> 32) & ~0UL);

    qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_DATA, d->config_msix_data);



    control = qpci_io_readl(d->pdev, addr + PCI_MSIX_ENTRY_VECTOR_CTRL);

    qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_VECTOR_CTRL,

                                        control & ~PCI_MSIX_ENTRY_CTRL_MASKBIT);



    qpci_io_writew(d->pdev, d->addr + VIRTIO_MSI_CONFIG_VECTOR, entry);

    vector = qpci_io_readw(d->pdev, d->addr + VIRTIO_MSI_CONFIG_VECTOR);

    g_assert_cmphex(vector, !=, VIRTIO_MSI_NO_VECTOR);

}

    void *addr;     addr = d->pdev->msix_table + (entry * 16);     qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_LOWER_ADDR,     qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_UPPER_ADDR,     control = qpci_io_readl(d->pdev, addr + PCI_MSIX_ENTRY_VECTOR_CTRL);     qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_VECTOR_CTRL,                                         control & ~PCI_MSIX_ENTRY_CTRL_MASKBIT);     void *addr;     addr = d->pdev->msix_table + (entry * 16);     qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_LOWER_ADDR,                                                     d->config_msix_addr & ~0UL);     qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_UPPER_ADDR,                                             (d->config_msix_addr >> 32) & ~0UL);     qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_DATA, d->config_msix_data);     control = qpci_io_readl(d->pdev, addr + PCI_MSIX_ENTRY_VECTOR_CTRL);     qpci_io_writel(d->pdev, addr + PCI_MSIX_ENTRY_VECTOR_CTRL,                                         control & ~PCI_MSIX_ENTRY_CTRL_MASKBIT);     qpci_io_writew(d->pdev, d->addr + VIRTIO_MSI_CONFIG_VECTOR, entry);     vector = qpci_io_readw(d->pdev, d->addr + VIRTIO_MSI_CONFIG_VECTOR);     void *addr;
void FUNC_0(QVirtioPCIDevice *VAR_0,

                                        QGuestAllocator *VAR_1, uint16_t VAR_2)

{

    uint16_t vector;

    uint32_t control;

    void *VAR_3;



    g_assert(VAR_0->pdev->msix_enabled);

    VAR_3 = VAR_0->pdev->msix_table + (VAR_2 * 16);



    g_assert_cmpint(VAR_2, >=, 0);

    g_assert_cmpint(VAR_2, <, qpci_msix_table_size(VAR_0->pdev));

    VAR_0->config_msix_entry = VAR_2;



    VAR_0->config_msix_data = 0x12345678;

    VAR_0->config_msix_addr = guest_alloc(VAR_1, 4);



    qpci_io_writel(VAR_0->pdev, VAR_3 + PCI_MSIX_ENTRY_LOWER_ADDR,

                                                    VAR_0->config_msix_addr & ~0UL);

    qpci_io_writel(VAR_0->pdev, VAR_3 + PCI_MSIX_ENTRY_UPPER_ADDR,

                                            (VAR_0->config_msix_addr >> 32) & ~0UL);

    qpci_io_writel(VAR_0->pdev, VAR_3 + PCI_MSIX_ENTRY_DATA, VAR_0->config_msix_data);



    control = qpci_io_readl(VAR_0->pdev, VAR_3 + PCI_MSIX_ENTRY_VECTOR_CTRL);

    qpci_io_writel(VAR_0->pdev, VAR_3 + PCI_MSIX_ENTRY_VECTOR_CTRL,

                                        control & ~PCI_MSIX_ENTRY_CTRL_MASKBIT);



    qpci_io_writew(VAR_0->pdev, VAR_0->VAR_3 + VIRTIO_MSI_CONFIG_VECTOR, VAR_2);

    vector = qpci_io_readw(VAR_0->pdev, VAR_0->VAR_3 + VIRTIO_MSI_CONFIG_VECTOR);

    g_assert_cmphex(vector, !=, VIRTIO_MSI_NO_VECTOR);

}

void FUNC_0(QVirtioPCIDevice *VAR_0,
QGuestAllocator *VAR_1, uint16_t VAR_2)
{ uint16_t vector; uint32_t control; void *VAR_3; g_assert(VAR_0->pdev->msix_enabled); VAR_3 = VAR_0->pdev->msix_table + (VAR_2 * 16); g_assert_cmpint(VAR_2, >=, 0); g_assert_cmpint(VAR_2, <, qpci_msix_table_size(VAR_0->pdev)); VAR_0->config_msix_entry = VAR_2; VAR_0->config_msix_data = 0x12345678; VAR_0->config_msix_addr = guest_alloc(VAR_1, 4); qpci_io_writel(VAR_0->pdev, VAR_3 + PCI_MSIX_ENTRY_LOWER_ADDR,
VAR_0->config_msix_addr & ~0UL); qpci_io_writel(VAR_0->pdev, VAR_3 + PCI_MSIX_ENTRY_UPPER_ADDR,
(VAR_0->config_msix_addr >> 32) & ~0UL); qpci_io_writel(VAR_0->pdev, VAR_3 + PCI_MSIX_ENTRY_DATA, VAR_0->config_msix_data); control = qpci_io_readl(VAR_0->pdev, VAR_3 + PCI_MSIX_ENTRY_VECTOR_CTRL); qpci_io_writel(VAR_0->pdev, VAR_3 + PCI_MSIX_ENTRY_VECTOR_CTRL,
control & ~PCI_MSIX_ENTRY_CTRL_MASKBIT); qpci_io_writew(VAR_0->pdev, VAR_0->VAR_3 + VIRTIO_MSI_CONFIG_VECTOR, VAR_2); vector = qpci_io_readw(VAR_0->pdev, VAR_0->VAR_3 + VIRTIO_MSI_CONFIG_VECTOR); g_assert_cmphex(vector, !=, VIRTIO_MSI_NO_VECTOR); }