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