[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 00/15] Base for adding PowerPC 64-bit instructions
From: |
Luis Pires |
Subject: |
[PATCH v2 00/15] Base for adding PowerPC 64-bit instructions |
Date: |
Tue, 27 Apr 2021 14:16:34 -0300 |
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