Code-base clean-up and refactoring (#47)
[lunaix-os.git] / lunaix-os / kernel / mm / page.c
1 #include <lunaix/mm/page.h>
2
3 pte_t 
4 alloc_kpage_at(pte_t* ptep, pte_t pte, int order)
5 {
6     ptr_t va = ptep_va(ptep, LFT_SIZE);
7
8     assert(kernel_addr(va));
9
10     struct leaflet* leaflet = alloc_leaflet_pinned(order);
11
12     if (!leaflet) {
13         return null_pte;
14     }
15
16     leaflet_wipe(leaflet);
17
18     ptep_map_leaflet(ptep, pte, leaflet);
19
20     tlb_flush_kernel_ranged(va, leaflet_nfold(leaflet));
21
22     return pte_at(ptep);
23 }