summaryrefslogtreecommitdiff
path: root/kc/boot/loader_paging.h
diff options
context:
space:
mode:
Diffstat (limited to 'kc/boot/loader_paging.h')
-rw-r--r--kc/boot/loader_paging.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/kc/boot/loader_paging.h b/kc/boot/loader_paging.h
new file mode 100644
index 0000000..dc9df62
--- /dev/null
+++ b/kc/boot/loader_paging.h
@@ -0,0 +1,29 @@
+#pragma once
+
+#include <kernel/memory/paging.h>
+
+#include <stdint.h>
+
+enum page_type
+{
+ INVALID_PAGE_TYPE = 0x0,
+ CODE_PAGE_TYPE = PAGE_PR,
+ RODATA_PAGE_TYPE = PAGE_PR,
+ DATA_PAGE_TYPE = PAGE_PR|PAGE_WR
+};
+
+uint64_t *new_page_table(void);
+uint64_t *get_page_map(void);
+void set_page_map(uint64_t *map);
+uint64_t *get_page_table(uint64_t *map, uint64_t virt, int level);
+uint64_t *get_page_entry(uint64_t *map, uint64_t virt);
+void map_page(void *map,
+ uint64_t virt,
+ uint64_t phys,
+ enum page_type type);
+void map_pages(void *map,
+ uint64_t virt,
+ uint64_t phys,
+ enum page_type type,
+ size_t size);
+