Configure PMP at boot

This commit is contained in:
Jonathan Behrens 2021-08-30 16:27:52 -04:00
parent 6de0381d61
commit 9655f71758
2 changed files with 17 additions and 0 deletions

View file

@ -181,6 +181,18 @@ w_mtvec(uint64 x)
asm volatile("csrw mtvec, %0" : : "r" (x)); asm volatile("csrw mtvec, %0" : : "r" (x));
} }
static inline void
w_pmpcfg0(uint64 x)
{
asm volatile("csrw pmpcfg0, %0" : : "r" (x));
}
static inline void
w_pmpaddr0(uint64 x)
{
asm volatile("csrw pmpaddr0, %0" : : "r" (x));
}
// use riscv's sv39 page table scheme. // use riscv's sv39 page table scheme.
#define SATP_SV39 (8L << 60) #define SATP_SV39 (8L << 60)

View file

@ -38,6 +38,11 @@ start()
w_mideleg(0xffff); w_mideleg(0xffff);
w_sie(r_sie() | SIE_SEIE | SIE_STIE | SIE_SSIE); w_sie(r_sie() | SIE_SEIE | SIE_STIE | SIE_SSIE);
// configure Physical Memory Protection to give supervisor mode
// access to all of physical memory.
w_pmpaddr0(0x3fffffffffffffull);
w_pmpcfg0(0xf);
// ask for clock interrupts. // ask for clock interrupts.
timerinit(); timerinit();