[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and c
From: |
Rusty Russell |
Subject: |
Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access |
Date: |
Fri, 09 Aug 2013 16:30:38 +0930 |
User-agent: |
Notmuch/0.15.2+81~gd2c8818 (http://notmuchmail.org) Emacs/23.4.1 (i686-pc-linux-gnu) |
Andreas Färber <address@hidden> writes:
> Am 08.08.2013 15:31, schrieb Anthony Liguori:
>> Rusty Russell <address@hidden> writes:
>> We have a mechanism to do weak functions via stubs/. I think it would
>> be better to do cpu_get_byteswap() as a stub function and then overload
>> it in the ppc64 code.
>
> If this as your name indicates is a per-CPU function then it should go
> into CPUClass. Interesting question is, what is virtio supposed to do if
> we have two ppc CPUs, one is Big Endian, the other is Little Endian.
> We'd need to check current_cpu then, which for Xen is always NULL.
Below is the minimal solution, which is sufficient for virtio.
If Anton wants per-cpu endianness for gdb, he'll need something more
sophisticated.
Feedback welcome!
Rusty.
Subject: cpu_get_byteswap: function for endian-ambivalent targets.
Signed-off-by: Rusty Russell <address@hidden>
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index a5bb515..ed84267 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -357,4 +357,13 @@ void cpu_reset_interrupt(CPUState *cpu, int mask);
*/
void cpu_resume(CPUState *cpu);
+/**
+ * cpu_get_byteswap:
+ *
+ * Is (any) CPU running in byteswapped mode: normally false. This
+ * doesn't take a cpu argument, because we don't support heterogeneous
+ * endianness.
+ */
+bool cpu_get_byteswap(void);
+
#endif
diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
index 9b701b4..d4af94a 100644
--- a/stubs/Makefile.objs
+++ b/stubs/Makefile.objs
@@ -25,3 +25,4 @@ stub-obj-y += vm-stop.o
stub-obj-y += vmstate.o
stub-obj-$(CONFIG_WIN32) += fd-register.o
stub-obj-y += cpus.o
+stub-obj-y += cpu_byteswap.o
diff --git a/stubs/cpu_byteswap.c b/stubs/cpu_byteswap.c
new file mode 100644
index 0000000..b3b669f
--- /dev/null
+++ b/stubs/cpu_byteswap.c
@@ -0,0 +1,6 @@
+#include "qom/cpu.h"
+
+bool cpu_get_byteswap(void)
+{
+ return false;
+}
Subject: target-ppc: ppc64 targets can be either endian.
In this case, we just query the first cpu.
Signed-off-by: Rusty Russell <address@hidden>
diff --git a/target-ppc/misc_helper.c b/target-ppc/misc_helper.c
index 616aab6..0a508eb 100644
--- a/target-ppc/misc_helper.c
+++ b/target-ppc/misc_helper.c
@@ -116,3 +116,8 @@ void ppc_store_msr(CPUPPCState *env, target_ulong value)
{
hreg_store_msr(env, value, 0);
}
+
+bool cpu_get_byteswap(void)
+{
+ return first_cpu->hflags & (1 << MSR_LE);
+}
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, (continued)
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Andreas Färber, 2013/08/08
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Rusty Russell, 2013/08/09
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Peter Maydell, 2013/08/09
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Benjamin Herrenschmidt, 2013/08/09
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Rusty Russell, 2013/08/11
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Benjamin Herrenschmidt, 2013/08/11
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Andreas Färber, 2013/08/09
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Rusty Russell, 2013/08/08
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access,
Rusty Russell <=
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Andreas Färber, 2013/08/09
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Rusty Russell, 2013/08/09
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Anthony Liguori, 2013/08/09
- Re: [Qemu-devel] [PATCH 1/7] virtio: allow byte swapping for vring and config access, Rusty Russell, 2013/08/11
[Qemu-devel] [PATCH 5/7] hw/block/virtio-blk: use virtio wrappers to access headers., Rusty Russell, 2013/08/08
[Qemu-devel] [PATCH 7/7] patch virtio-serial-biendian.patch, Rusty Russell, 2013/08/08