|
From: | Alexey Baturo |
Subject: | Re: [PATCH v11 6/7] target/riscv: Apply pointer masking for virtualized memory accesses |
Date: | Thu, 28 Nov 2024 14:30:46 +0300 |
On 11/26/24 23:35, baturo.alexey@gmail.com wrote:
> From: Alexey Baturo <baturo.alexey@gmail.com>
>
> Signed-off-by: Alexey Baturo <baturo.alexey@gmail.com>
> ---
> target/riscv/cpu.h | 2 ++
> target/riscv/cpu_helper.c | 19 +++++++++++++++++++
> target/riscv/insn_trans/trans_rvh.c.inc | 11 +++++++++++
> target/riscv/translate.c | 4 ++++
> 4 files changed, 36 insertions(+)
>
> diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h
> index 11e3a6d647..6bbd9c6c25 100644
> --- a/target/riscv/cpu.h
> +++ b/target/riscv/cpu.h
> @@ -634,6 +634,7 @@ FIELD(TB_FLAGS, BCFI_ENABLED, 28, 1)
> /* If pointer masking should be applied and address sign extended */
> FIELD(TB_FLAGS, PM_PMM, 29, 2)
> FIELD(TB_FLAGS, PM_SIGNEXTEND, 31, 1)
> +FIELD(TB_FLAGS, PM_VPMM, 32, 2)
(1) tb_flags is only 32 bits wide, and this overflows.
(2) All of the logic for HSV/HLV is in op_helper.c, so there's no point in doing this
masking inline. Do it in helper_hyp_* instead, possibly reusing pieces of adjust_addr
from vector_helper.c.
r~
[Prev in Thread] | Current Thread | [Next in Thread] |