[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v6 0/6] Pointer Masking update for Zjpm v0.8
From: |
Alexey Baturo |
Subject: |
[PATCH v6 0/6] Pointer Masking update for Zjpm v0.8 |
Date: |
Thu, 1 Feb 2024 14:00:41 +0000 |
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
[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
- [PATCH v6 0/6] Pointer Masking update for Zjpm v0.8,
Alexey Baturo <=
- [PATCH v6 4/6] target/riscv: Add pointer masking tb flags, Alexey Baturo, 2024/02/01
- [PATCH v6 5/6] target/riscv: Update address modify functions to take into account pointer masking, Alexey Baturo, 2024/02/01
- [PATCH v6 3/6] target/riscv: Add helper functions to calculate current number of masked bits for pointer masking, Alexey Baturo, 2024/02/01
- [PATCH v6 2/6] target/riscv: Add new CSR fields for S{sn, mn, m}pm extensions as part of Zjpm v0.8, Alexey Baturo, 2024/02/01
- [PATCH v6 6/6] target/riscv: Enable updates for pointer masking variables and thus enable pointer masking extension, Alexey Baturo, 2024/02/01
- [PATCH v6 1/6] target/riscv: Remove obsolete pointer masking extension code., Alexey Baturo, 2024/02/01
- Re: [PATCH v6 0/6] Pointer Masking update for Zjpm v0.8, Alistair Francis, 2024/02/01