diff options
Diffstat (limited to 'kc/boot/loader_paging.h')
| -rw-r--r-- | kc/boot/loader_paging.h | 29 |
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); + |
