diff options
| author | Ada Christine <adachristine18@gmail.com> | 2022-02-21 16:38:41 +0000 |
|---|---|---|
| committer | Ada Christine <adachristine18@gmail.com> | 2022-02-21 16:38:41 +0000 |
| commit | 203776e1e0b27786775b01a8bcfdd14b3e3d1816 (patch) | |
| tree | 8a48e45d996b06b532e9828575e14d1d8ffece92 /kc/boot/loader_paging.h | |
| parent | 6002ec7d841d91d85cc55733c539594c97fc2e30 (diff) | |
split out paging functions
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); + |
