summaryrefslogtreecommitdiff
path: root/kc/boot/loader_paging.h
blob: dc9df626854ddb263cbf5e8bec383e75e7ce023a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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);