qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/17] hw/microblaze: Allow running cross-endian vCPUs
@ 2024-11-08 15:43 Philippe Mathieu-Daudé
  2024-11-08 15:43 ` [PATCH v3 01/17] hw/microblaze: Restrict MemoryRegionOps are implemented as 32-bit Philippe Mathieu-Daudé
                   ` (16 more replies)
  0 siblings, 17 replies; 28+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-11-08 15:43 UTC (permalink / raw)
  To: qemu-devel, Anton Johansson
  Cc: Jason Wang, Paolo Bonzini, Richard Henderson, devel,
	Marc-André Lureau, Edgar E. Iglesias, Thomas Huth, qemu-arm,
	qemu-ppc, Peter Maydell, Alistair Francis,
	Philippe Mathieu-Daudé

Missing review: 4 (new) & 10

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é (17):
  hw/microblaze: Restrict MemoryRegionOps are implemented as 32-bit
  hw/microblaze: Propagate CPU endianness to microblaze_load_kernel()
  hw/intc/xilinx_intc: Make device endianness configurable
  RFC hw/net/xilinx_ethlite: Simplify by having configurable endianness
  RFC hw/timer/xilinx_timer: Allow down to 8-bit memory access
  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/ssi/xilinx_spips: 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: Add microblaze cross-endianness tests

 hw/microblaze/boot.h                          |  4 +-
 include/hw/ssi/xilinx_spips.h                 |  1 +
 target/microblaze/cpu.h                       |  7 +++
 hw/arm/xilinx_zynq.c                          |  1 +
 hw/arm/xlnx-zynqmp.c                          | 40 +++++--------
 hw/char/xilinx_uartlite.c                     | 31 ++++++----
 hw/intc/xilinx_intc.c                         | 50 ++++++++++++----
 hw/microblaze/boot.c                          |  8 +--
 hw/microblaze/petalogix_ml605_mmu.c           |  4 +-
 hw/microblaze/petalogix_s3adsp1800_mmu.c      | 58 ++++++++++++++++---
 hw/microblaze/xlnx-zynqmp-pmu.c               |  2 +-
 hw/net/xilinx_ethlite.c                       | 42 +++++++++-----
 hw/ppc/virtex_ml507.c                         |  1 +
 hw/ssi/xilinx_spi.c                           | 24 +++++---
 hw/ssi/xilinx_spips.c                         | 36 +++++++-----
 hw/timer/xilinx_timer.c                       | 33 +++++++----
 target/microblaze/translate.c                 | 49 ++++++++++------
 .../functional/test_microblaze_s3adsp1800.py  | 27 ++++++++-
 .../test_microblazeel_s3adsp1800.py           | 25 +++++++-
 19 files changed, 309 insertions(+), 134 deletions(-)

-- 
2.45.2



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

end of thread, other threads:[~2025-02-05  0:22 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-08 15:43 [PATCH v3 00/17] hw/microblaze: Allow running cross-endian vCPUs Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 01/17] hw/microblaze: Restrict MemoryRegionOps are implemented as 32-bit Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 02/17] hw/microblaze: Propagate CPU endianness to microblaze_load_kernel() Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 03/17] hw/intc/xilinx_intc: Make device endianness configurable Philippe Mathieu-Daudé
2024-11-08 15:43 ` [RFC PATCH v3 04/17] hw/net/xilinx_ethlite: Simplify by having configurable endianness Philippe Mathieu-Daudé
2024-11-08 16:05   ` Paolo Bonzini
2024-11-11 12:02     ` Philippe Mathieu-Daudé
2024-11-08 15:43 ` [RFC PATCH v3 05/17] hw/timer/xilinx_timer: Allow down to 8-bit memory access Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 06/17] hw/timer/xilinx_timer: Make device endianness configurable Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 07/17] hw/char/xilinx_uartlite: " Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 08/17] hw/ssi/xilinx_spi: " Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 09/17] hw/ssi/xilinx_spips: " Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 10/17] hw/arm/xlnx-zynqmp: Use &error_abort for programming errors Philippe Mathieu-Daudé
2025-02-04 21:34   ` Philippe Mathieu-Daudé
2025-02-05  0:21     ` Anton Johansson via
2024-11-08 15:43 ` [PATCH v3 11/17] target/microblaze: Explode MO_TExx -> MO_TE | MO_xx Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 12/17] target/microblaze: Set MO_TE once in do_load() / do_store() Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 13/17] target/microblaze: Introduce mo_endian() helper Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 14/17] target/microblaze: Consider endianness while translating code Philippe Mathieu-Daudé
2024-11-08 15:43 ` [PATCH v3 15/17] hw/microblaze: Support various endianness for s3adsp1800 machines Philippe Mathieu-Daudé
2024-11-11  7:56   ` Thomas Huth
2024-11-11 11:59     ` Philippe Mathieu-Daudé
2024-11-11 12:16       ` Thomas Huth
2024-11-08 15:43 ` [PATCH v3 16/17] tests/functional: Explicit endianness of microblaze assets Philippe Mathieu-Daudé
2024-11-11  7:51   ` Thomas Huth
2024-11-08 15:43 ` [PATCH v3 17/17] tests/functional: Add microblaze cross-endianness tests Philippe Mathieu-Daudé
2024-11-11  7:57   ` Thomas Huth
2024-11-11 11:54     ` Philippe Mathieu-Daudé

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).