1 #include <lunaix/mm/pmm.h>
2 #include <lunaix/mm/vmm.h>
4 #include <sys/mm/mempart.h>
7 vmm_dup_page(pid_t pid, ptr_t pa)
9 ptr_t new_ppg = pmm_alloc_page(pid, 0);
10 vmm_set_mapping(VMS_SELF, PG_MOUNT_3, new_ppg, PG_PREM_RW, VMAP_NULL);
11 vmm_set_mapping(VMS_SELF, PG_MOUNT_4, pa, PG_PREM_RW, VMAP_NULL);
13 asm volatile("movl %1, %%edi\n"
15 "rep movsl\n" ::"c"(1024),
18 : "memory", "%edi", "%esi");
20 vmm_del_mapping(VMS_SELF, PG_MOUNT_3);
21 vmm_del_mapping(VMS_SELF, PG_MOUNT_4);