Currently JIT backends do not work as intended with the MMU. The reason for that is the fact that fetches for entire basic blocks are done at the start of execution, not taking into account potential updates to the architectural state that effect the MMU.
Some of these updates currently ignored are:
- Writing the 'satp' CSR
- Writing MMU-relevant bits in mstatus like SUM, MXR, MPRV and TVM
- Flushing the TLB by calling SFENCE.VMA
There is overlap with #20 wrt updates to mstatus