X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/34f6af4f61e0eec9c96113e07f140b609b4113c8..3d33d9c0d1894c447324d8327200c212ddad3716:/lunaix-os/arch/generic/vmutils.c diff --git a/lunaix-os/arch/generic/vmutils.c b/lunaix-os/arch/generic/vmutils.c index 8fc0d82..ab25524 100644 --- a/lunaix-os/arch/generic/vmutils.c +++ b/lunaix-os/arch/generic/vmutils.c @@ -10,7 +10,7 @@ dup_leaflet(struct leaflet* leaflet) _default void pmm_arch_init_pool(struct pmem* memory) { - fail("unimplemented"); + pmm_declare_pool(POOL_UNIFIED, 1, memory->list_len); } _default ptr_t @@ -18,3 +18,22 @@ pmm_arch_init_remap(struct pmem* memory, struct boot_handoff* bctx) { fail("unimplemented"); } + +_default pte_t +translate_vmr_prot(unsigned int vmr_prot, pte_t pte) +{ + pte = pte_mkuser(pte); + + if ((vmr_prot & PROT_WRITE)) { + pte = pte_mkwritable(pte); + } + + if ((vmr_prot & PROT_EXEC)) { + pte = pte_mkexec(pte); + } + else { + pte = pte_mknexec(pte); + } + + return pte; +}