qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/16] hw/microblaze: Allow running cross-endian vCPUs
@ 2025-02-06 11:33 Philippe Mathieu-Daudé
  2025-02-06 11:33 ` [PATCH v4 01/16] hw/intc/xilinx_intc: Make device endianness configurable Philippe Mathieu-Daudé
                   ` (15 more replies)
  0 siblings, 16 replies; 21+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-02-06 11:33 UTC (permalink / raw)
  To: qemu-devel
  Cc: Anton Johansson, Alistair Francis, Richard Henderson, Thomas Huth,
	Jason Wang, Edgar E. Iglesias, Philippe Mathieu-Daudé

Missing review: 2, 13 to 16.

Since v3:
- Addressed Thomas review comments

Since v2:
- Addressed Richard's review comments

Since v1:
- Make device endianness configurable (Edgar)
- Convert more Xilinx devices
- Avoid preprocessor #if (Richard)
- Add R-b tags

Make machines endianness-agnostic, allowing to run a big-endian vCPU
on the little-endian 'qemu-system-microblazeel' binary, and a little
endian one on the big-endian 'qemu-system-microblaze' binary.

Tests added, following combinations covered:
- little-endian vCPU using little-endian binary (in-tree)
- little-endian vCPU using big-endian binary (new)
- big-endian vCPU using little-endian binary (new)
- big-endian vCPU using big-endian binary (in-tree)

To make a target endian-agnostic we need to remove the MO_TE uses.
In order to do that, we propagate the MemOp from earlier in the
call stack, or we extract it from the vCPU env (on MicroBlaze the
CPU endianness is exposed by the 'ENDI' bit).

Next step: Look at unifying binaries.

Please review,

Phil.

Philippe Mathieu-Daudé (16):
  hw/intc/xilinx_intc: Make device endianness configurable
  hw/net/xilinx_ethlite: Make device endianness configurable
  hw/timer/xilinx_timer: Make device endianness configurable
  hw/char/xilinx_uartlite: Make device endianness configurable
  hw/ssi/xilinx_spi: Make device endianness configurable
  hw/arm/xlnx-zynqmp: Use &error_abort for programming errors
  target/microblaze: Explode MO_TExx -> MO_TE | MO_xx
  target/microblaze: Set MO_TE once in do_load() / do_store()
  target/microblaze: Introduce mo_endian() helper
  target/microblaze: Consider endianness while translating code
  hw/microblaze: Support various endianness for s3adsp1800 machines
  tests/functional: Explicit endianness of microblaze assets
  tests/functional: Allow microblaze tests to take a machine name
    argument
  tests/functional: Have microblaze tests inherit common parent class
  tests/functional: Move microblaze tests to common parent class
  tests/functional: Run cross-endian microblaze tests

 target/microblaze/cpu.h                       |  7 +++
 hw/arm/xlnx-zynqmp.c                          | 38 ++++--------
 hw/char/xilinx_uartlite.c                     | 27 +++++----
 hw/intc/xilinx_intc.c                         | 52 ++++++++++++-----
 hw/microblaze/petalogix_ml605_mmu.c           |  3 +
 hw/microblaze/petalogix_s3adsp1800_mmu.c      | 58 ++++++++++++++++---
 hw/net/xilinx_ethlite.c                       | 20 +++++--
 hw/ppc/virtex_ml507.c                         |  1 +
 hw/ssi/xilinx_spi.c                           | 24 +++++---
 hw/timer/xilinx_timer.c                       | 35 ++++++-----
 target/microblaze/translate.c                 | 49 ++++++++++------
 .../functional/test_microblaze_s3adsp1800.py  | 42 ++++++++++++--
 .../test_microblazeel_s3adsp1800.py           | 34 +++--------
 13 files changed, 256 insertions(+), 134 deletions(-)

-- 
2.47.1



^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2025-02-06 14:03 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-06 11:33 [PATCH v4 00/16] hw/microblaze: Allow running cross-endian vCPUs Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 01/16] hw/intc/xilinx_intc: Make device endianness configurable Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 02/16] hw/net/xilinx_ethlite: " Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 03/16] hw/timer/xilinx_timer: " Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 04/16] hw/char/xilinx_uartlite: " Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 05/16] hw/ssi/xilinx_spi: " Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 06/16] hw/arm/xlnx-zynqmp: Use &error_abort for programming errors Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 07/16] target/microblaze: Explode MO_TExx -> MO_TE | MO_xx Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 08/16] target/microblaze: Set MO_TE once in do_load() / do_store() Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 09/16] target/microblaze: Introduce mo_endian() helper Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 10/16] target/microblaze: Consider endianness while translating code Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 11/16] hw/microblaze: Support various endianness for s3adsp1800 machines Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 12/16] tests/functional: Explicit endianness of microblaze assets Philippe Mathieu-Daudé
2025-02-06 11:33 ` [PATCH v4 13/16] tests/functional: Allow microblaze tests to take a machine name argument Philippe Mathieu-Daudé
2025-02-06 12:36   ` Thomas Huth
2025-02-06 11:33 ` [PATCH v4 14/16] tests/functional: Have microblaze tests inherit common parent class Philippe Mathieu-Daudé
2025-02-06 12:41   ` Thomas Huth
2025-02-06 11:33 ` [PATCH v4 15/16] tests/functional: Move microblaze tests to " Philippe Mathieu-Daudé
2025-02-06 12:43   ` Thomas Huth
2025-02-06 11:33 ` [PATCH v4 16/16] tests/functional: Run cross-endian microblaze tests Philippe Mathieu-Daudé
2025-02-06 14:02   ` Thomas Huth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).