Age | Commit message (Collapse) | Author | Files | Lines |
|
It was somewhat annoying that CHERI would have had to track both
successful and erroneous occurrences within the same type. Break the
failures out to their own form and, while here, attempt to write down my
understanding of the extension's information flow through vmem.
|
|
Otherwise there's no use for PTW_Ext_Error. This is required for
sail-cheri-riscv to be able to make use of its own page table
exceptions. The alternative to this is to pass the ext_ptw to
translationException, but given PTW_Ext_Error exists it seems this was
the intended way, and aligns with how access faults vs page faults are
distinguished.
|
|
Make termination of the page table walk functions provable
unconditionally in Isabelle by catching the case when "level" becomes
negative. On the Sail level, this case cannot occur, because "level"
has type "nat", but we currently don't automatically carry over the
non-negativity constraint of the Sail type "nat" into Isabelle.
|
|
For Lem, bypass the Sail implementation of {read,write}_ram and map to
atomic primitives directly.
We might want to make these functions primitive for other backends as well.
|
|
|
|
|
|
|
|
E_CHERI code. Enable extensions for PTE checks and PTW errors, and propagate those into exception codes.
|
|
spec. This is not possible for RV32, so pass zeros there.
|
|
definitions.
|
|
- unify AccessType and ReadType since they were essentially redundant,
making it easier to implement PMP checks for ReadWrite/atomic accesses.
- add command line options to enable PMP in the platform
- also fix the matching for the case when all entries are off
|
|
|
|
. convert duopod to directly use Sail lib/regfp functions
. put lib/regfp wrappers in prelude, and avoid calling them directly in riscv_mem
. remove mmio assumption in page-table walks, making read/write calls symmetric
. prune obsolete functions from prelude_mem
|
|
|
|
|
|
- handle sfence.vma in machine-mode
- flush both tlb39 and tlb48 in 64-bit mode
|
|
This showed up in RV32, but not in RV64, presumably because the highest address bits are not typically exercised typical physical memory maps.
|
|
Being first-order prevents straight-forward abstraction over the PTE operations, but perhaps there is another way to generalize and unify.
|