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