summaryrefslogtreecommitdiff
path: root/kernel/src/generic/paging.hpp
blob: 56e88ccbd7b67b119d220db570605ddb2016b877 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once
#include <cstdint>
#include <generic/arch.hpp>
#include <generic/pmm.hpp>
#include <generic/hhdm.hpp>
#include <klibc/string.hpp>
#include <generic/bootloader/bootloader.hpp>
#include <utils/align.hpp>
#include <utils/gobject.hpp>
#include <klibc/stdio.hpp>

namespace paging {
    void map_kernel(std::uintptr_t root);
    void mapentry(std::uintptr_t root, std::uint8_t type, std::uint32_t flags);
    void map_range(std::uintptr_t root, std::uint64_t phys, std::uintptr_t virt, std::size_t size, int flags);
    void zero_range(std::uintptr_t root, std::uintptr_t virt, std::size_t size);
    void free_range(std::uintptr_t root, std::uintptr_t virt, std::uintptr_t len);
    void duplicate_range(std::uintptr_t root, std::uintptr_t src_root, std::uintptr_t virt, std::uintptr_t len, std::uint32_t flags);
    void init();
};