Code-base clean-up and refactoring (#47)
[lunaix-os.git] / lunaix-os / arch / x86 / mm / vmutils.c
index df831c296ff9edb32f7f58d3caf8ecb69de10a74..5f4d3df88bb1d612b715b2c7eed733e2e62ed5c9 100644 (file)
@@ -1,5 +1,6 @@
 #include <lunaix/mm/page.h>
-#include <sys/mm/mm_defs.h>
+
+#include <asm/mm_defs.h>
 
 struct leaflet*
 dup_leaflet(struct leaflet* leaflet)
@@ -36,4 +37,23 @@ dup_leaflet(struct leaflet* leaflet)
     vunmap(dest_va, new_leaflet);
 
     return new_leaflet;
-}
\ No newline at end of file
+}
+
+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_mknonexec(pte);
+    }
+
+    return pte;
+}