[PATCH v3 2/7] target/riscv: Adjust PMP size for no-MMU RV64 QEMU running RV32

LIU Zhiwei posted 7 patches 5 months, 4 weeks ago
Only 6 patches received!
There is a newer version of this series
[PATCH v3 2/7] target/riscv: Adjust PMP size for no-MMU RV64 QEMU running RV32
Posted by LIU Zhiwei 5 months, 4 weeks ago
From: TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>

Ensure pmp_size is correctly determined using mxl for RV32
in RV64 QEMU.

Signed-off-by: TANG Tiancheng <tangtiancheng.ttc@alibaba-inc.com>
Reviewed-by: Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
---
 target/riscv/pmp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c
index 9eea397e72..f65aa3dba7 100644
--- a/target/riscv/pmp.c
+++ b/target/riscv/pmp.c
@@ -326,7 +326,7 @@ bool pmp_hart_has_privs(CPURISCVState *env, hwaddr addr,
              */
             pmp_size = -(addr | TARGET_PAGE_MASK);
         } else {
-            pmp_size = sizeof(target_ulong);
+            pmp_size = 2UL << riscv_cpu_mxl(env);
         }
     } else {
         pmp_size = size;
-- 
2.25.1
Re: [PATCH v3 2/7] target/riscv: Adjust PMP size for no-MMU RV64 QEMU running RV32
Posted by Richard Henderson 5 months, 4 weeks ago
On 7/3/24 07:49, LIU Zhiwei wrote:
> -            pmp_size = sizeof(target_ulong);
> +            pmp_size = 2UL << riscv_cpu_mxl(env);

UL is almost always incorrect in qemu, as 'long' has no specifically useful meaning.

In this case you can drop it completely.


r~