On Wed, May 20, 2020 at 6:52 PM Bin Meng <bmeng...@gmail.com> wrote: > > On Wed, May 20, 2020 at 5:40 AM Alistair Francis > <alistair.fran...@wdc.com> wrote: > > > > Signed-off-by: Alistair Francis <alistair.fran...@wdc.com> > > --- > > target/riscv/pmp.c | 14 +++++++++----- > > 1 file changed, 9 insertions(+), 5 deletions(-) > > > > diff --git a/target/riscv/pmp.c b/target/riscv/pmp.c > > index 0e6b640fbd..607a991260 100644 > > --- a/target/riscv/pmp.c > > +++ b/target/riscv/pmp.c > > @@ -233,12 +233,16 @@ bool pmp_hart_has_privs(CPURISCVState *env, > > target_ulong addr, > > return true; > > } > > > > - /* > > - * if size is unknown (0), assume that all bytes > > - * from addr to the end of the page will be accessed. > > - */ > > if (size == 0) { > > - pmp_size = -(addr | TARGET_PAGE_MASK); > > + if (!riscv_feature(env, RISCV_FEATURE_MMU)) { > > My previous comments were not fully addressed. I think the logic should be: > > if (riscv_feature(env, RISCV_FEATURE_MMU)) > > Otherwise it does not match your comment and the commit title.
Ah! You are right. This uncovered a bug with how we set the MMU as well. I have fixed this and added a new patch. Alistair > > > + /* > > + * If size is unknown (0), assume that all bytes > > + * from addr to the end of the page will be accessed. > > + */ > > + pmp_size = -(addr | TARGET_PAGE_MASK); > > + } else { > > + pmp_size = sizeof(target_ulong); > > + } > > } else { > > pmp_size = size; > > } > > Regards, > Bin