This series provides the basic infrastructure for adding the new 32/64-bit instructions in Power ISA 3.1 to target/ppc.
It starts by changing decodetree.py to support 64-bit instructions, then changes the target/ppc code to allow 32- and 64-bit instructions to be decoded using decodetree, and finishes by adding the implementation for an initial group of instructions to demonstrate the new approach: - addis/addis/paddi - pnop - integer loads/stores (both prefixed and non-prefixed) Link to the changes in Github: https://github.com/PPC64/qemu/tree/lffpires-ppc-isa31-1 v2: - Store current pc in ctx instead of insn_size - Use separate decode files for 32- and 64-bit instructions - Improvements to the exception/is_jmp logic - Use translator_loop_temp_check() - Moved logic to prevent translation from crossing page boundaries - Additional instructions using decodetree: addis, pnop, loads/stores - Added check for prefixed insn support in cpu flags This code contains contributions from Richard Henderson, Matheus Ferst and myself. Luis Pires (2): decodetree: Add support for 64-bit instructions target/ppc: Check cpu flags for prefixed insn support Richard Henderson (13): target/ppc: Add cia field to DisasContext target/ppc: Split out decode_legacy target/ppc: Move DISAS_NORETURN setting into gen_exception* target/ppc: Tidy exception vs exit_tb target/ppc: Mark helper_raise_exception* as noreturn target/ppc: Use translator_loop_temp_check target/ppc: Add infrastructure for prefixed insns target/ppc: Move ADDI, ADDIS to decodetree, implement PADDI target/ppc: Implement PNOP target/ppc: Move D/DS/X-form integer loads to decodetree target/ppc: Implement prefixed integer load instructions target/ppc: Move D/DS/X-form integer stores to decodetree target/ppc: Implement prefixed integer store instructions docs/devel/decodetree.rst | 5 +- scripts/decodetree.py | 26 +- target/ppc/cpu.h | 1 + target/ppc/helper.h | 4 +- target/ppc/insn32.decode | 85 ++++ target/ppc/insn64.decode | 64 +++ target/ppc/meson.build | 9 + target/ppc/translate.c | 513 +++++++-------------- target/ppc/translate/fixedpoint-impl.c.inc | 424 +++++++++++++++++ target/ppc/translate_init.c.inc | 42 +- 10 files changed, 798 insertions(+), 375 deletions(-) create mode 100644 target/ppc/insn32.decode create mode 100644 target/ppc/insn64.decode create mode 100644 target/ppc/translate/fixedpoint-impl.c.inc -- 2.25.1