diff options
| author | Vasan VS <[email protected]> | 2021-11-08 10:24:56 +0530 |
|---|---|---|
| committer | Anup Patel <[email protected]> | 2021-11-11 18:27:53 +0530 |
| commit | 31fe5a7a3d80f0ceb25005740313cee1ef3fd4f6 (patch) | |
| tree | 1879794074da80210363b7df3ff55806ecb4eca8 /lib | |
| parent | b8845e420453531f92414b91828c58d6d4f90fff (diff) | |
lib: sbi: Fix PMP address bits detection
We should ensure that pmpcfg0.pmp0cfg is set to zero before using
pmpaddr0 CSR for detecting implemented PMP address bits.
Fixes: bf21632860b4 ("lib: sbi: Detect PMP granularity and number
of address bits")
Signed-off-by: Vasan VS <[email protected]>
Signed-off-by: Anup Patel <[email protected]>
Reviewed-by: Atish Patra <[email protected]>
Reviewed-by: Dong Du <[email protected]>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sbi/sbi_hart.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c index a4e9bf59..76ed678f 100644 --- a/lib/sbi/sbi_hart.c +++ b/lib/sbi/sbi_hart.c @@ -338,6 +338,10 @@ static unsigned long hart_pmp_get_allowed_addr(void) unsigned long val = 0; struct sbi_trap_info trap = {0}; + csr_write_allowed(CSR_PMPCFG0, (ulong)&trap, 0); + if (trap.cause) + return 0; + csr_write_allowed(CSR_PMPADDR0, (ulong)&trap, PMP_ADDR_MASK); if (!trap.cause) { val = csr_read_allowed(CSR_PMPADDR0, (ulong)&trap); |
