On Fri, Feb 2, 2024 at 1:11 AM Alexey Baturo <baturo.alexey@gmail.com> wrote:
>
> From: Alexey Baturo <baturo.alexey@gmail.com>
>
> Hi,
>
> This patch series is rebased on https://github.com/alistair23/qemu/tree/riscv-to-apply.next
Thanks!
Applied to riscv-to-apply.next
Alistair
>
> Thanks
>
> [v5]:
> This patch series targets Zjpm v0.8 extension.
> The spec itself could be found here: https://github.com/riscv/riscv-j-extension/blob/8088461d8d66a7676872b61c908cbeb7cf5c5d1d/zjpm-spec.pdf
> This patch series is updated after the suggested comments:
> - add "x-" to the extension names to indicate experimental
>
> [v4]:
> Patch series updated after the suggested comments:
> - removed J-letter extension as it's unused
> - renamed and fixed function to detect if address should be sign-extended
> - zeroed unused context variables and moved computation logic to another patch
> - bumped pointer masking version_id and minimum_version_id by 1
>
> [v3]:
> There patches are updated after Richard's comments:
> - moved new tb flags to the end
> - used tcg_gen_(s)extract to get the final address
> - properly handle CONFIG_USER_ONLY
>
> [v2]:
> As per Richard's suggestion I made pmm field part of tb_flags.
> It allowed to get rid of global variable to store pmlen.
> Also it allowed to simplify all the machinery around it.
>
> [v1]:
> It looks like Zjpm v0.8 is almost frozen and we don't expect it change drastically anymore.
> Compared to the original implementation with explicit base and mask CSRs, we now only have
> several fixed options for number of masked bits which are set using existing CSRs.
> The changes have been tested with handwritten assembly tests and LLVM HWASAN
> test suite.
>
> Alexey Baturo (6):
> target/riscv: Remove obsolete pointer masking extension code.
> target/riscv: Add new CSR fields for S{sn,mn,m}pm extensions as part
> of Zjpm v0.8
> target/riscv: Add helper functions to calculate current number of
> masked bits for pointer masking
> target/riscv: Add pointer masking tb flags
> target/riscv: Update address modify functions to take into account
> pointer masking
> target/riscv: Enable updates for pointer masking variables and thus
> enable pointer masking extension
>
> target/riscv/cpu.c | 22 ++++----
> target/riscv/cpu.h | 47 ++++++++---------
> target/riscv/cpu_bits.h | 90 ++-------------------------------
> target/riscv/cpu_cfg.h | 3 ++
> target/riscv/cpu_helper.c | 97 ++++++++++++++++++++----------------
> target/riscv/csr.c | 41 ++++-----------
> target/riscv/machine.c | 22 +++-----
> target/riscv/pmp.c | 13 +++--
> target/riscv/pmp.h | 11 ++--
> target/riscv/tcg/tcg-cpu.c | 5 +-
> target/riscv/translate.c | 46 +++++++----------
> target/riscv/vector_helper.c | 15 +++++-
> 12 files changed, 160 insertions(+), 252 deletions(-)
>
> --
> 2.34.1
>
>