summaryrefslogtreecommitdiffstats
path: root/target/riscv
diff options
context:
space:
mode:
authorHesham Almatary2019-05-30 15:51:35 +0200
committerPalmer Dabbelt2019-06-24 08:44:42 +0200
commitdb21e6f72721996ddf1948c35a8ee35238089da4 (patch)
treed2449f0f81102b43cb533d650d3980cb306cf292 /target/riscv
parentRISC-V: Fix a PMP bug where it succeeds even if PMP entry is off (diff)
downloadqemu-db21e6f72721996ddf1948c35a8ee35238089da4.tar.gz
qemu-db21e6f72721996ddf1948c35a8ee35238089da4.tar.xz
qemu-db21e6f72721996ddf1948c35a8ee35238089da4.zip
RISC-V: Fix a PMP check with the correct access size
The PMP check should be of the memory access size rather than TARGET_PAGE_SIZE. Signed-off-by: Hesham Almatary <Hesham.Almatary@cl.cam.ac.uk> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
Diffstat (limited to 'target/riscv')
-rw-r--r--target/riscv/cpu_helper.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
index 66be83210f..e1b079e69c 100644
--- a/target/riscv/cpu_helper.c
+++ b/target/riscv/cpu_helper.c
@@ -452,8 +452,7 @@ bool riscv_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
if (riscv_feature(env, RISCV_FEATURE_PMP) &&
(ret == TRANSLATE_SUCCESS) &&
- !pmp_hart_has_privs(env, pa, TARGET_PAGE_SIZE, 1 << access_type,
- mode)) {
+ !pmp_hart_has_privs(env, pa, size, 1 << access_type, mode)) {
ret = TRANSLATE_PMP_FAIL;
}
if (ret == TRANSLATE_PMP_FAIL) {