示例#1
0
static inline bool qvirtio_pci_is_big_endian(QVirtioPCIDevice *dev)
{
    QPCIBus *bus = dev->pdev->bus;

    /* FIXME: virtio 1.0 is always little-endian */
    return qtest_big_endian(bus->qts);
}
示例#2
0
static uint64_t qvirtio_pci_config_readq(QVirtioDevice *d, uint64_t addr)
{
    QVirtioPCIDevice *dev = (QVirtioPCIDevice *)d;
    int i;
    uint64_t u64 = 0;

    if (qtest_big_endian()) {
        for (i = 0; i < 8; ++i) {
            u64 |= (uint64_t)qpci_io_readb(dev->pdev,
                                (void *)(uintptr_t)addr + i) << (7 - i) * 8;
        }
    } else {
        for (i = 0; i < 8; ++i) {
            u64 |= (uint64_t)qpci_io_readb(dev->pdev,
                                (void *)(uintptr_t)addr + i) << i * 8;
        }
    }

    return u64;
}