alarm: Force unset_alarm to grab the CV lock
[akaros.git] / kern / include / pmap.h
index 73cc995..b93158f 100644 (file)
@@ -56,8 +56,6 @@
 #define KADDR_NOCHECK(pa) ((void*)(pa + KERNBASE))
 #define KBASEADDR(kla) KADDR(PADDR(kla))
 
-extern char bootstacktop[], bootstack[];
-
 extern physaddr_t max_pmem;            /* Total amount of physical memory */
 extern size_t max_nr_pages;            /* Total number of physical memory pages */
 extern physaddr_t max_paddr;   /* Maximum addressable physical address */
@@ -96,12 +94,16 @@ bool regions_collide_unsafe(uintptr_t start1, uintptr_t end1,
                             uintptr_t start2, uintptr_t end2);
 
 /* Arch specific implementations for these */
+void map_segment(pgdir_t pgdir, uintptr_t va, size_t size, physaddr_t pa,
+                 int perm, int pml_shift);
+int unmap_segment(pgdir_t pgdir, uintptr_t va, size_t size);
 pte_t pgdir_walk(pgdir_t pgdir, const void *va, int create);
 int get_va_perms(pgdir_t pgdir, const void *va);
 int arch_pgdir_setup(pgdir_t boot_copy, pgdir_t *new_pd);
 physaddr_t arch_pgdir_get_cr3(pgdir_t pd);
 void arch_pgdir_clear(pgdir_t *pd);
 int arch_max_jumbo_page_shift(void);
+void arch_add_intermediate_pts(pgdir_t pgdir, uintptr_t va, size_t len);
 
 static inline page_t *ppn2page(size_t ppn)
 {