-
I found some minor inconsistencies comparing the implementation of sail with the description in the spec, but I don't know why. The documentation requires sail // PRIVATE: check if a PTE is a pointer to next level (non-leaf)
function pte_is_ptr(pte_flags : PTE_Flags) -> bool = (pte_flags[X] == 0b0)
& (pte_flags[W] == 0b0)
& (pte_flags[R] == 0b0)spike #define PTE_TABLE(PTE) (((PTE) & (PTE_V | PTE_R | PTE_W | PTE_X)) == PTE_V)qemu if (pte & (PTE_R | PTE_W | PTE_X)) {
goto leaf;
} |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
|
They are equivalent. In the specification, the step 3 disallows r=0, x=?, w=1. This gets extended by Zicdiss as the xwr = 010 encoding, which is reserved without Zicfiss, denotes a shadow stack page with Zicfiss. |
Beta Was this translation helpful? Give feedback.
They are equivalent. In the specification, the step 3 disallows r=0, x=?, w=1. This gets extended by Zicdiss as the xwr = 010 encoding, which is reserved without Zicfiss, denotes a shadow stack page with Zicfiss.