This repository has been archived on 2025-02-26. You can view files and clone it, but cannot push or open issues or pull requests.
hilbert-os/include/mercury/kernel/paging.hpp
2024-01-08 22:28:41 -05:00

34 lines
824 B
C++

#ifndef MERCURY_KERNEL_PAGING_HPP
#define MERCURY_KERNEL_PAGING_HPP
#include <cstdint>
//in paging.asm
extern "C" [[noreturn]] void switch_to_kernel_p4(void (*and_then_jump_to)());
namespace mercury::kernel::paging {
void mark_all_pram_used();
void mark_all_vram_free();
//assumes page-alignment
void mark_pram_region_free(uint64_t start_addr, uint64_t end_addr);
//assumes page-alignment
void mark_vram_region_used(uint64_t start_addr, uint64_t end_addr);
uint64_t find_unmapped_vram_region(uint64_t page_count);
void init_kernel_page_tables(uint64_t kernel_offset);
void map_kernel_stack();
//assumes page-alignment
void map_kernel_page(
uint64_t paddr, uint64_t vaddr, bool write, bool execute);
uint64_t get_used_vram_page_count();
uint64_t get_free_pram_page_count();
}
#endif