This series allows leon3 emulations to record up 4 CPUs. It requires some enhancements in the grlib_irqmp device and adding the cpu_index field in the asr17 instruction.
It has been tested locally with various bareboard runtimes and through the Gitlab CI: https://gitlab.com/Helflym/qemu/-/pipelines/1127834623. Clément Chigot (9): sparc/grlib: split out the headers for each peripherals intc/grlib_irqmp: add ncpus property intc/grlib_irqmp: implements the multiprocessor status register intc/grlib_irqmp: implements multicore irq target/sparc: implement asr17 feature for smp target/sparc: simplify qemu_irq_ack leon3: implement multiprocessor leon3: check cpu_id in the tiny bootloader MAINTAINERS: replace Fabien by myself as Leon3 maintainer MAINTAINERS | 2 +- hw/char/grlib_apbuart.c | 4 +- hw/intc/grlib_irqmp.c | 97 ++++++++---- hw/sparc/leon3.c | 145 +++++++++++++----- hw/timer/grlib_gptimer.c | 4 +- include/hw/char/grlib_uart.h | 30 ++++ .../hw/{sparc/grlib.h => intc/grlib_irqmp.h} | 16 +- include/hw/timer/grlib_gptimer.h | 30 ++++ target/sparc/cpu.h | 2 +- target/sparc/helper.c | 16 ++ target/sparc/helper.h | 1 + target/sparc/int32_helper.c | 2 +- target/sparc/translate.c | 13 +- 13 files changed, 258 insertions(+), 104 deletions(-) create mode 100644 include/hw/char/grlib_uart.h rename include/hw/{sparc/grlib.h => intc/grlib_irqmp.h} (83%) create mode 100644 include/hw/timer/grlib_gptimer.h -- 2.25.1