summary refs log tree commit diff stats
path: root/include/hw/virtio/virtio-access.h
diff options
context:
space:
mode:
authorGreg Kurz <gkurz@linux.vnet.ibm.com>2015-06-17 15:23:34 +0200
committerMichael S. Tsirkin <mst@redhat.com>2015-06-17 17:12:54 +0200
commit41d283bdab08868a244b9c19dce507fdf15a8990 (patch)
tree5f1833625ff63af3463ef3353f63d30b2d743b27 /include/hw/virtio/virtio-access.h
parent332f64073bddc9240cd572f64682a44572b67049 (diff)
downloadfocaccia-qemu-41d283bdab08868a244b9c19dce507fdf15a8990.tar.gz
focaccia-qemu-41d283bdab08868a244b9c19dce507fdf15a8990.zip
virtio: introduce virtio_legacy_is_cross_endian()
This helper will be used by vhost and tap to detect cross-endianness in
the legacy virtio case.

Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'include/hw/virtio/virtio-access.h')
-rw-r--r--include/hw/virtio/virtio-access.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/hw/virtio/virtio-access.h b/include/hw/virtio/virtio-access.h
index ee28c21fef..cee5dd70c9 100644
--- a/include/hw/virtio/virtio-access.h
+++ b/include/hw/virtio/virtio-access.h
@@ -32,6 +32,19 @@ static inline bool virtio_access_is_big_endian(VirtIODevice *vdev)
 #endif
 }
 
+static inline bool virtio_legacy_is_cross_endian(VirtIODevice *vdev)
+{
+#ifdef TARGET_IS_BIENDIAN
+#ifdef HOST_WORDS_BIGENDIAN
+    return !virtio_is_big_endian(vdev);
+#else
+    return virtio_is_big_endian(vdev);
+#endif
+#else
+    return false;
+#endif
+}
+
 static inline uint16_t virtio_lduw_phys(VirtIODevice *vdev, hwaddr pa)
 {
     if (virtio_access_is_big_endian(vdev)) {