diff options
-rw-r--r-- | lib/sbi/sbi_hart.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c index d2c7aba..6be9286 100644 --- a/lib/sbi/sbi_hart.c +++ b/lib/sbi/sbi_hart.c @@ -114,6 +114,16 @@ static void mstatus_init(struct sbi_scratch *scratch) */ menvcfg_val |= ENVCFG_CBIE_INV << ENVCFG_CBIE_SHIFT; + /* + * Set menvcfg.PBMTE == 1 for RV64 or RV128 + * + * If Svpbmt extension is not available then menvcfg.PBMTE + * will be read-only zero. + */ +#if __riscv_xlen > 32 + menvcfg_val |= ENVCFG_PBMTE; +#endif + csr_write(CSR_MENVCFG, menvcfg_val); } |