This patchset implements a new machine type, mps3-an536. This is similar to our existing mps2-* and mps3-* machine types in that it is a model of an FPGA image for the Arm MPS3 development board. It differs from our current machine types in being based around an R-profile CPU, the Cortex-R52, rather than an M-profile CPU.
This patchset implements the board support to a similar level as that of our M-profile MPS machine types: most but not all devices are supported. Some minor missing features are documented in the docs patch (and already in mps2.rst where they apply to all boards in this family). If there's demand (specifically from the Xen development use case which is motivating this board model) we can look at adding them. I have tested with the "selftest" binary supplied with the FPGA image, and also with a Linux kernel. (The kernel support for this board is not upstream, but the patches can be found in this lakml thread https://lore.kernel.org/all/20220630083641.21835-1-vladimir.mur...@arm.com/ or at the git branch https://gitlab.arm.com/linux-arm/linux-vm/-/tree/staging/rclass-5.19 ) To get some of this guest code to boot I had to make some improvements to our Cortex-R52 emulation; these are in the first four patches. thanks -- PMM Peter Maydell (13): target/arm: Use new CBAR encoding for all v8 CPUs, not all aarch64 CPUs target/arm: The Cortex-R52 has a read-only CBAR target/arm: Add Cortex-R52 IMPDEF sysregs target/arm: Allow access to SPSR_hyp from hyp mode hw/misc/mps2-scc: Fix condition for CFG3 register hw/misc/mps2-scc: Factor out which-board conditionals hw/misc/mps2-scc: Make changes needed for AN536 FPGA image hw/arm/mps3r: Initial skeleton for mps3-an536 board hw/arm/mps3r: Add CPUs, GIC, and per-CPU RAM hw/arm/mps3r: Add UARTs hw/arm/mps3r: Add GPIO, watchdog, dual-timer, I2C devices hw/arm/mps3r: Add remaining devices docs: Add documentation for the mps3-an536 board MAINTAINERS | 3 +- docs/system/arm/mps2.rst | 37 +- configs/devices/arm-softmmu/default.mak | 1 + include/hw/misc/mps2-scc.h | 1 + hw/arm/mps3r.c | 640 ++++++++++++++++++++++++ hw/misc/mps2-scc.c | 138 ++++- target/arm/helper.c | 2 +- target/arm/tcg/cpu32.c | 109 ++++ target/arm/tcg/op_helper.c | 43 +- target/arm/tcg/translate.c | 19 +- hw/arm/Kconfig | 5 + hw/arm/meson.build | 1 + 12 files changed, 955 insertions(+), 44 deletions(-) create mode 100644 hw/arm/mps3r.c -- 2.34.1