From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51293) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b7iFg-0001xq-Ay for qemu-devel@nongnu.org; Tue, 31 May 2016 07:54:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b7iFe-0004di-Bc for qemu-devel@nongnu.org; Tue, 31 May 2016 07:54:27 -0400 References: <146468219419.25446.8053365248306938869.stgit@bahia.huguette.org> From: Paolo Bonzini Message-ID: <81bca811-db78-ffd2-dbfc-67e14ae88ce2@redhat.com> Date: Tue, 31 May 2016 13:54:11 +0200 MIME-Version: 1.0 In-Reply-To: <146468219419.25446.8053365248306938869.stgit@bahia.huguette.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH] virtio: move bi-endian target support to a single location List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Greg Kurz , Peter Maydell , "Michael S. Tsirkin" , Alexander Graf , David Gibson Cc: qemu-arm@nongnu.org, qemu-ppc@nongnu.org, qemu-devel@nongnu.org On 31/05/2016 10:09, Greg Kurz wrote: > diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c > index 440071815408..81cc5b0ae35c 100644 > --- a/hw/virtio/vhost.c > +++ b/hw/virtio/vhost.c > @@ -767,15 +767,11 @@ static inline bool vhost_needs_vring_endian(VirtI= ODevice *vdev) > if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { > return false; > } > -#ifdef TARGET_IS_BIENDIAN > #ifdef HOST_WORDS_BIGENDIAN > return vdev->device_endian =3D=3D VIRTIO_DEVICE_ENDIAN_LITTLE; > #else > return vdev->device_endian =3D=3D VIRTIO_DEVICE_ENDIAN_BIG; > #endif > -#else > - return false; > -#endif This should be okay. > } > =20 > static int vhost_virtqueue_set_vring_endian_legacy(struct vhost_dev *d= ev, > diff --git a/include/hw/virtio/virtio-access.h b/include/hw/virtio/virt= io-access.h > index 8dc84f520316..4b2803814642 100644 > --- a/include/hw/virtio/virtio-access.h > +++ b/include/hw/virtio/virtio-access.h > @@ -17,9 +17,13 @@ > #include "hw/virtio/virtio.h" > #include "exec/address-spaces.h" > =20 > +#if defined(TARGET_PPC64) || defined(TARGET_ARM) > +#define LEGACY_VIRTIO_IS_BIENDIAN 1 > +#endif These will only be correct if something else includes cpu.h. Instead of defining this, you should add #include "cpu.h" at the top of include/hw/virtio-access.h and leave the definitions in target-*/cpu.h. Thanks, Paolo > static inline bool virtio_access_is_big_endian(VirtIODevice *vdev) > { > -#if defined(TARGET_IS_BIENDIAN) > +#if defined(LEGACY_VIRTIO_IS_BIENDIAN) > return virtio_is_big_endian(vdev); > #elif defined(TARGET_WORDS_BIGENDIAN) > if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) { > diff --git a/target-arm/cpu.h b/target-arm/cpu.h > index c741b53ad45f..60971e16f7a4 100644 > --- a/target-arm/cpu.h > +++ b/target-arm/cpu.h > @@ -29,8 +29,6 @@ > # define TARGET_LONG_BITS 32 > #endif > =20 > -#define TARGET_IS_BIENDIAN 1 > - > #define CPUArchState struct CPUARMState > =20 > #include "qemu-common.h" > diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h > index cd33539d1ce9..556d66c39d11 100644 > --- a/target-ppc/cpu.h > +++ b/target-ppc/cpu.h > @@ -28,8 +28,6 @@ > #define TARGET_LONG_BITS 64 > #define TARGET_PAGE_BITS 12 > =20 > -#define TARGET_IS_BIENDIAN 1 > - > /* Note that the official physical address space bits is 62-M where M > is implementation dependent. I've not looked up M for the set of > cpus we emulate at the system level. */ >=20