v3: - Split v2 patch 1 into smaller patches 1 through 5 (Cedric) - Moved special PPE42 decrementer support into distinct patch (Cedric) - Introduced a specific MachineState for the ppe42 Machine (Cedric) - Use qdev_realize to create the machine (Cedric) - Use valid_cpu_types to determine validity of CPU (Cedric) - Changed machine ram limit from 2GB to 512KB (Cedric) - Utilize the TRANS macro to reduce TCG code (Chinmay)
This patchset adds support for the IBM PPE42 processor, including a simple machine providing a platform for testing the PPE42 instructions. The PPE42 processor is used as an embedded processor in the IBM Power9, Power10 and Power12 processors for various tasks. It is basically a stripped down version of the IBM PowerPC 405 processor, with some added instructions for handling 64-bit loads and stores and some 64-bit logical operations. For more information on the PPE 42 processor please visit: https://wiki.raptorcs.com/w/images/a/a3/PPE_42X_Core_Users_Manual.pdf A functional test is included. This test downloads a prebuilt test image from: https://github.com/milesg-github/ppe42-tests Building the image rquires a forked version of an old version of GCC, which can be found here: https://github.com/open-power/ppe42-gcc Thanks, Glenn Glenn Miles (9): target/ppc: IBM PPE42 general regs and flags target/ppc: Add IBM PPE42 family of processors target/ppc: IBM PPE42 exception flags and regs target/ppc: Add IBM PPE42 exception model target/ppc: Support for IBM PPE42 MMU target/ppc: Add IBM PPE42 special instructions hw/ppc: Support for an IBM PPE42 CPU decrementer hw/ppc: Add a test machine for the IBM PPE42 CPU tests/functional: Add test for IBM PPE42 instructions MAINTAINERS | 7 + hw/ppc/Kconfig | 9 + hw/ppc/meson.build | 2 + hw/ppc/ppc_booke.c | 7 +- hw/ppc/ppe42_machine.c | 102 +++++ include/hw/ppc/ppc.h | 1 + target/ppc/cpu-models.c | 7 + target/ppc/cpu-models.h | 4 + target/ppc/cpu.h | 76 +++- target/ppc/cpu_init.c | 241 ++++++++-- target/ppc/excp_helper.c | 163 +++++++ target/ppc/helper_regs.c | 45 +- target/ppc/insn32.decode | 66 ++- target/ppc/tcg-excp_helper.c | 12 + target/ppc/translate.c | 35 +- target/ppc/translate/ppe-impl.c.inc | 663 ++++++++++++++++++++++++++++ tests/functional/meson.build | 1 + tests/functional/test_ppc_ppe42.py | 79 ++++ 18 files changed, 1453 insertions(+), 67 deletions(-) create mode 100644 hw/ppc/ppe42_machine.c create mode 100644 target/ppc/translate/ppe-impl.c.inc create mode 100644 tests/functional/test_ppc_ppe42.py -- 2.43.0