diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-05-13 15:49:50 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-05-13 15:49:50 +0800 |
| commit | 11053d1cab4fcaac7bf8808bd51647875cee1bf3 (patch) | |
| tree | dc98c10dfe69a4e1578c33915495eaab3fc65036 /na/arch/riscv/include | |
| parent | 60a7d7409c91216a11c13abee53066b260edb17a (diff) | |
| download | lume-11053d1cab4fcaac7bf8808bd51647875cee1bf3.tar.gz lume-11053d1cab4fcaac7bf8808bd51647875cee1bf3.tar.xz | |
feat: add support for Copy-On-Write in SV39 page table management
Diffstat (limited to 'na/arch/riscv/include')
| -rw-r--r-- | na/arch/riscv/include/arch/pmap.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/na/arch/riscv/include/arch/pmap.h b/na/arch/riscv/include/arch/pmap.h index 4504af7..a99825a 100644 --- a/na/arch/riscv/include/arch/pmap.h +++ b/na/arch/riscv/include/arch/pmap.h @@ -25,13 +25,18 @@ inline constexpr uint64 PTE_U = 1ULL << 4; inline constexpr uint64 PTE_G = 1ULL << 5; inline constexpr uint64 PTE_A = 1ULL << 6; inline constexpr uint64 PTE_D = 1ULL << 7; +inline constexpr uint64 PTE_COW = 1ULL << 8; /* Custom RSW bit for Copy-On-Write */ uint64 create(); void destroy(uint64 root_pa); int map(uint64 root_pa, uint64 va, uint64 pa, uint64 perm); int map_2mb(uint64 root_pa, uint64 va, uint64 pa, uint64 perm); void unmap(uint64 root_pa, uint64 va); +int protect(uint64 root_pa, uint64 va, uint64 perm); +int protect_range(uint64 root_pa, uint64 start, uint64 end, uint64 perm); bool lookup(uint64 root_pa, uint64 va, uint64* pa_out); +bool is_cow(uint64 root_pa, uint64 va); +int make_cow(uint64 root_pa, uint64 va); void activate(uint64 root_pa); /* |
