From 203776e1e0b27786775b01a8bcfdd14b3e3d1816 Mon Sep 17 00:00:00 2001 From: Ada Christine Date: Mon, 21 Feb 2022 16:38:41 +0000 Subject: split out paging functions --- kc/boot/loader_paging.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 kc/boot/loader_paging.h (limited to 'kc/boot/loader_paging.h') 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 + +#include + +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); + -- cgit v1.3.1-1-g115d