#include <lunaix/mm/page.h>
-#include <sys/mm/mm_defs.h>
+
+#include <asm/mm_defs.h>
struct leaflet*
dup_leaflet(struct leaflet* leaflet)
new_leaflet = alloc_leaflet(leaflet_order(leaflet));
- src_va = leaflet_mount(leaflet);
+ // TODO need a proper long term fix for the contention of page mount point
dest_va = vmap(new_leaflet, KERNEL_DATA);
+ src_va = leaflet_mount(leaflet);
size_t cnt_wordsz = leaflet_size(new_leaflet) / sizeof(ptr_t);
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;
+}