[PATCH v2 00/13] target/mips: add missing Octeon user-mode support

James Hilliard posted 13 patches 1 month, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260421-mips-octeon-missing-insns-v2-v2-0-a0791df188c9@gmail.com
Maintainers: Laurent Vivier <laurent@vivier.eu>, Pierrick Bouvier <pierrick.bouvier@linaro.org>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Aurelien Jarno <aurelien@aurel32.net>, Jiaxun Yang <jiaxun.yang@flygoat.com>, Aleksandar Rikalo <arikalo@gmail.com>, Huacai Chen <chenhuacai@kernel.org>
There is a newer version of this series
MAINTAINERS                                   |    2 +
linux-user/mips/cpu_loop.c                    |    5 +
linux-user/mips/target_syscall.h              |    3 +
linux-user/mips64/target_syscall.h            |    3 +
linux-user/syscall.c                          |   60 +
target/mips/cpu-defs.c.inc                    |   10 +-
target/mips/cpu.c                             |   75 +-
target/mips/cpu.h                             |  249 +++
target/mips/helper.h                          |    6 +
target/mips/internal.h                        |    3 +
target/mips/system/machine.c                  |  142 ++
target/mips/tcg/meson.build                   |    1 +
target/mips/tcg/octeon.decode                 |   47 +-
target/mips/tcg/octeon_crypto.c               | 2479 +++++++++++++++++++++++++
target/mips/tcg/octeon_translate.c            |  704 ++++++-
target/mips/tcg/op_helper.c                   |  105 ++
target/mips/tcg/translate.c                   |   23 +-
target/mips/tcg/translate.h                   |    1 +
tests/tcg/mips/Makefile.target                |   11 +
tests/tcg/mips/user/isa/octeon/octeon-insns.c |  216 +++
tests/tcg/mips64/Makefile.target              |   20 +
tests/tcg/mips64el/Makefile.target            |    8 +
22 files changed, 4129 insertions(+), 44 deletions(-)
[PATCH v2 00/13] target/mips: add missing Octeon user-mode support
Posted by James Hilliard 1 month, 1 week ago
This series updates MIPS linux-user unaligned-access behavior and fills
in missing Octeon user-mode instruction support used by existing Octeon
binaries.

The first patch models the Linux/MIPS MIPS_FIXADE policy so user-mode
unaligned scalar accesses default to software fixups and
sysmips(MIPS_FIXADE) can toggle SIGBUS/BUS_ADRALN behavior.

The Octeon patches add integer, indexed memory, atomic, multiplier, COP2
crypto, CHORD, and LLM support. The series also adds a small
mips64/mips64el TCG guest test covering representative Octeon integer,
multiplier, and COP2 selector paths. The final patch corrects the
Octeon68XX CP1 feature bits and FCR defaults.

Changes since v1:
- Split BADDU/DMUL destination fixes into a preliminary patch.
- Split the SEQ/SNE decode refactoring into a preliminary patch.
- Moved Octeon multiplier state to uint64_t arrays and updated VMState.
- Switched Octeon helper ABIs to i64/uint64_t where applicable.
- Moved COP2 selector decode/support logic into octeon_translate.c.
- Converted Octeon translator TCG ops to explicit i64 forms.
- Added in-tree TCG tests for mips64 and mips64el linux-user.
- Used switch ranges and g_assert_not_reached() for SHA3/ZUC shared
  selector handling.
- Dropped Octeon prefixes from generic Camellia helper routines.
- Replaced the reflected GFM 64-bit carryless multiply loop with
  crypto/clmul.h.
- Moved the Octeon68XX CP1 CPU-model correction to the end of the
  series.
- Added migration coverage for Octeon COP2 crypto and LLM sparse state.

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
---
James Hilliard (13):
      linux-user/mips, target/mips: honor MIPS_FIXADE for unaligned accesses
      target/mips: fix Octeon arithmetic destination handling
      target/mips: split Octeon SEQ/SNE decode
      target/mips: use explicit i64 TCG ops for Octeon translation
      target/mips: add Octeon arithmetic and memory instructions
      target/mips: add Octeon LA* atomic instructions
      target/mips: add Octeon COP2 crypto core support
      target/mips: add Octeon SMS4 crypto support
      target/mips: add Octeon SHA3 crypto support
      target/mips: add Octeon ZUC crypto support
      target/mips: add Octeon Camellia crypto support
      target/mips: add Octeon CHORD and LLM COP2 support
      target/mips: expose Octeon68XX floating-point support

 MAINTAINERS                                   |    2 +
 linux-user/mips/cpu_loop.c                    |    5 +
 linux-user/mips/target_syscall.h              |    3 +
 linux-user/mips64/target_syscall.h            |    3 +
 linux-user/syscall.c                          |   60 +
 target/mips/cpu-defs.c.inc                    |   10 +-
 target/mips/cpu.c                             |   75 +-
 target/mips/cpu.h                             |  249 +++
 target/mips/helper.h                          |    6 +
 target/mips/internal.h                        |    3 +
 target/mips/system/machine.c                  |  142 ++
 target/mips/tcg/meson.build                   |    1 +
 target/mips/tcg/octeon.decode                 |   47 +-
 target/mips/tcg/octeon_crypto.c               | 2479 +++++++++++++++++++++++++
 target/mips/tcg/octeon_translate.c            |  704 ++++++-
 target/mips/tcg/op_helper.c                   |  105 ++
 target/mips/tcg/translate.c                   |   23 +-
 target/mips/tcg/translate.h                   |    1 +
 tests/tcg/mips/Makefile.target                |   11 +
 tests/tcg/mips/user/isa/octeon/octeon-insns.c |  216 +++
 tests/tcg/mips64/Makefile.target              |   20 +
 tests/tcg/mips64el/Makefile.target            |    8 +
 22 files changed, 4129 insertions(+), 44 deletions(-)
---
base-commit: 98b060da3a4f92b2a994ead5b16a87e783baf77c
change-id: 20260420-mips-octeon-missing-insns-v2-5e693770cf2c

Best regards,
--  
James Hilliard <james.hilliard1@gmail.com>