diff options
author | Andreas Färber <afaerber@suse.de> | 2014-07-14 17:38:18 +0200 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2014-07-15 14:18:15 +0100 |
commit | 0e16297461264b3ea8f7282d1195cf53aa8a707c (patch) | |
tree | cadfdca8d6e142a46ccb6a65fa704d48163bb77b /tests/libqos | |
parent | 0a9934eef166836c8100fce72f7f837cb8b2ed2b (diff) | |
download | qemu-0e16297461264b3ea8f7282d1195cf53aa8a707c.zip qemu-0e16297461264b3ea8f7282d1195cf53aa8a707c.tar.gz qemu-0e16297461264b3ea8f7282d1195cf53aa8a707c.tar.bz2 |
libqos: Fix PC PCI endianness glitches
The libqos implementation of io_read{b,w,l} and io_write{b,w,l} hooks
was relying on qtest_mem{read,write}() respectively. With d81d410 (usb:
improve ehci/uhci test) this resulted in assertion failures on ppc hosts:
ERROR:tests/usb-hcd-ehci-test.c:78:ehci_port_test: assertion failed: ((value & mask) == (expect & mask))
ERROR:tests/usb-hcd-ehci-test.c:128:pci_uhci_port_2: assertion failed: (pcibus != NULL)
ERROR:tests/usb-hcd-ehci-test.c:150:pci_ehci_port_2: assertion failed: (pcibus != NULL)
qtest_read{b,w,l,q}() and qtest_write{b,w,l,q}() had been introduced
as endian-safe replacement for qtest_mem{read,write}() in I2C in
872536b (qtest: Add MMIO support). Use them for PCI as well.
Cc: Anthony Liguori <aliguori@amazon.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Fixes: c4efe1c qtest: add libqos including PCI support
Fixes: d81d410 usb: improve ehci/uhci test
Signed-off-by: Andreas Färber <afaerber@suse.de>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'tests/libqos')
-rw-r--r-- | tests/libqos/pci-pc.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/tests/libqos/pci-pc.c b/tests/libqos/pci-pc.c index bf741a4..4adf400 100644 --- a/tests/libqos/pci-pc.c +++ b/tests/libqos/pci-pc.c @@ -41,7 +41,7 @@ static uint8_t qpci_pc_io_readb(QPCIBus *bus, void *addr) if (port < 0x10000) { value = inb(port); } else { - memread(port, &value, sizeof(value)); + value = readb(port); } return value; @@ -55,7 +55,7 @@ static uint16_t qpci_pc_io_readw(QPCIBus *bus, void *addr) if (port < 0x10000) { value = inw(port); } else { - memread(port, &value, sizeof(value)); + value = readw(port); } return value; @@ -69,7 +69,7 @@ static uint32_t qpci_pc_io_readl(QPCIBus *bus, void *addr) if (port < 0x10000) { value = inl(port); } else { - memread(port, &value, sizeof(value)); + value = readl(port); } return value; @@ -82,7 +82,7 @@ static void qpci_pc_io_writeb(QPCIBus *bus, void *addr, uint8_t value) if (port < 0x10000) { outb(port, value); } else { - memwrite(port, &value, sizeof(value)); + writeb(port, value); } } @@ -93,7 +93,7 @@ static void qpci_pc_io_writew(QPCIBus *bus, void *addr, uint16_t value) if (port < 0x10000) { outw(port, value); } else { - memwrite(port, &value, sizeof(value)); + writew(port, value); } } @@ -104,7 +104,7 @@ static void qpci_pc_io_writel(QPCIBus *bus, void *addr, uint32_t value) if (port < 0x10000) { outl(port, value); } else { - memwrite(port, &value, sizeof(value)); + writel(port, value); } } |