diff options
| author | rin <rin@NetBSD.org> | 2023-07-07 07:19:36 +0000 |
|---|---|---|
| committer | rin <rin@NetBSD.org> | 2023-07-07 07:19:36 +0000 |
| commit | 03b4d9a3e8cdbb1b0efa1f475bf2130c6f4f1cd1 (patch) | |
| tree | 7ad4cd78d44e6ba749f898dd01539b32b59b4324 /sys/dev/virtio/virtio_mmio.c | |
| parent | dee5f377e3c043c2998ef5524d65090b8a5327a9 (diff) | |
virtio(4): Fix byte order of DMA data for armeb in the same manner as
aarch64eb.
Fix comments to explain what is going on for {arm,aarch64}eb on QEMU.
This is not due to QEMU bugs; it correctly configures everything for
little-endian environment, and we forcibly change byte order only for
CPU cores during kernel bootstrap.
Diffstat (limited to 'sys/dev/virtio/virtio_mmio.c')
| -rw-r--r-- | sys/dev/virtio/virtio_mmio.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/sys/dev/virtio/virtio_mmio.c b/sys/dev/virtio/virtio_mmio.c index 3962cbe7e85..7745006562e 100644 --- a/sys/dev/virtio/virtio_mmio.c +++ b/sys/dev/virtio/virtio_mmio.c @@ -1,4 +1,4 @@ -/* $NetBSD: virtio_mmio.c,v 1.10 2023/04/19 00:23:45 yamaguchi Exp $ */ +/* $NetBSD: virtio_mmio.c,v 1.11 2023/07/07 07:19:36 rin Exp $ */ /* $OpenBSD: virtio_mmio.c,v 1.2 2017/02/24 17:12:31 patrick Exp $ */ /* @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: virtio_mmio.c,v 1.10 2023/04/19 00:23:45 yamaguchi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: virtio_mmio.c,v 1.11 2023/07/07 07:19:36 rin Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -68,12 +68,10 @@ __KERNEL_RCSID(0, "$NetBSD: virtio_mmio.c,v 1.10 2023/04/19 00:23:45 yamaguchi E /* * MMIO configuration space for virtio-mmio v1 is in guest byte order. * - * XXX Note that aarch64eb pretends to be little endian. the MMIO registers - * are in little endian but the device config registers and data structures - * are in big endian; this is due to a bug in current Qemu. + * XXX For big-endian aarch64 and arm, see note in virtio_pci.c. */ -#if defined(__aarch64__) && BYTE_ORDER == BIG_ENDIAN +#if (defined(__aarch64__) || defined(__arm__)) && BYTE_ORDER == BIG_ENDIAN # define READ_ENDIAN LITTLE_ENDIAN # define STRUCT_ENDIAN BIG_ENDIAN #elif BYTE_ORDER == BIG_ENDIAN |
