X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/7b0dccbab69e806a63c4504c3ddb82e45241985b..270869139db617e29a35bb9ded41087bb702f9ac:/lunaix-os/kernel/mm/page.c diff --git a/lunaix-os/kernel/mm/page.c b/lunaix-os/kernel/mm/page.c index 400197f..7bccbb3 100644 --- a/lunaix-os/kernel/mm/page.c +++ b/lunaix-os/kernel/mm/page.c @@ -1 +1,23 @@ -#include \ No newline at end of file +#include + +pte_t +alloc_kpage_at(pte_t* ptep, pte_t pte, int order) +{ + ptr_t va = ptep_va(ptep, LFT_SIZE); + + assert(kernel_addr(va)); + + struct leaflet* leaflet = alloc_leaflet_pinned(order); + + if (!leaflet) { + return null_pte; + } + + leaflet_wipe(leaflet); + + ptep_map_leaflet(ptep, pte, leaflet); + + tlb_flush_kernel_ranged(va, leaflet_nfold(leaflet)); + + return pte_at(ptep); +} \ No newline at end of file