diff --git a/arch/x86_64/pmap.c b/arch/x86_64/pmap.c index 6d5dca9..5792aa5 100644 --- a/arch/x86_64/pmap.c +++ b/arch/x86_64/pmap.c @@ -285,7 +285,12 @@ void pmap_destroy(pmap_t pmap) kern_status_t pmap_add(pmap_t pmap, void *p, pfn_t pfn, enum vm_prot prot, enum pmap_flags flags) { - return KERN_OK; + enum page_size ps = PS_4K; + if (flags & PMAP_HUGEPAGE) { + ps = PS_2M; + } + + return do_pmap_add(pmap, p, pfn, prot, ps); } kern_status_t pmap_add_block(pmap_t pmap, void *p, pfn_t pfn, size_t len, enum vm_prot prot, enum pmap_flags flags) diff --git a/include/socks/pmap.h b/include/socks/pmap.h index f79046a..d062387 100644 --- a/include/socks/pmap.h +++ b/include/socks/pmap.h @@ -18,6 +18,7 @@ typedef ml_pmap_t pmap_t; typedef ml_pfn_t pfn_t; enum pmap_flags { + PMAP_NORMAL = 0x00u, PMAP_HUGEPAGE = 0x01u, };