aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/memory/kernel_mapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/src/memory/kernel_mapper.cpp')
-rw-r--r--arch/x86_64/src/memory/kernel_mapper.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/arch/x86_64/src/memory/kernel_mapper.cpp b/arch/x86_64/src/memory/kernel_mapper.cpp
index 89b2e83..08c32c5 100644
--- a/arch/x86_64/src/memory/kernel_mapper.cpp
+++ b/arch/x86_64/src/memory/kernel_mapper.cpp
@@ -1,9 +1,9 @@
-#include "x86_64/memory/kernel_mapper.hpp"
+#include "arch/memory/kernel_mapper.hpp"
#include "kapi/memory.hpp"
#include "kapi/system.hpp"
-#include "x86_64/boot/ld.hpp"
+#include "arch/boot/ld.hpp"
#include <kstd/print>
@@ -19,7 +19,7 @@
#include <string_view>
#include <utility>
-namespace teachos::memory::x86_64
+namespace arch::memory
{
namespace
@@ -39,15 +39,15 @@ namespace teachos::memory::x86_64
kernel_mapper::kernel_mapper(multiboot2::information_view const * mbi)
: m_mbi{std::move(mbi)}
- , m_kernel_load_base{std::bit_cast<std::uintptr_t>(&boot::x86_64::TEACHOS_VMA)}
+ , m_kernel_load_base{std::bit_cast<std::uintptr_t>(&arch::boot::TEACHOS_VMA)}
{}
- auto kernel_mapper::remap_kernel(page_mapper & mapper) -> void
+ auto kernel_mapper::remap_kernel(kapi::memory::page_mapper & mapper) -> void
{
auto elf_information = m_mbi->maybe_elf_symbols<elf::format::elf64>();
if (!elf_information)
{
- system::panic("[x86_64:MEM] ELF section information is not available.");
+ kapi::system::panic("[x86_64:MEM] ELF section information is not available.");
}
auto sections = *elf_information;
@@ -61,38 +61,38 @@ namespace teachos::memory::x86_64
if (allocated_sections.empty())
{
- system::panic("[x86_64:MEM] No allocated ELF sections were found.");
+ kapi::system::panic("[x86_64:MEM] No allocated ELF sections were found.");
}
std::ranges::for_each(allocated_sections,
[&](auto const & section) -> auto { map_section(section, sections.name(section), mapper); });
}
- auto kernel_mapper::map_section(section_header_type const & section, std::string_view name, page_mapper & mapper)
- -> void
+ auto kernel_mapper::map_section(section_header_type const & section, std::string_view name,
+ kapi::memory::page_mapper & mapper) -> void
{
auto number_of_pages = (section.size + (PLATFORM_PAGE_SIZE - 1)) / PLATFORM_PAGE_SIZE;
- auto linear_start_address = linear_address{section.virtual_load_address};
- auto physical_start_address = physical_address{section.virtual_load_address & ~m_kernel_load_base};
+ auto linear_start_address = kapi::memory::linear_address{section.virtual_load_address};
+ auto physical_start_address = kapi::memory::physical_address{section.virtual_load_address & ~m_kernel_load_base};
kstd::println("[x86_64:MEM] mapping {}"
"\n {} bytes -> page count: {}"
"\n {} @ {}",
name, section.size, number_of_pages, linear_start_address, physical_start_address);
- auto first_page = page::containing(linear_start_address);
- auto first_frame = frame::containing(physical_start_address);
+ auto first_page = kapi::memory::page::containing(linear_start_address);
+ auto first_frame = kapi::memory::frame::containing(physical_start_address);
- auto page_flags = page_mapper::flags::empty;
+ auto page_flags = kapi::memory::page_mapper::flags::empty;
if (section.writable())
{
- page_flags |= page_mapper::flags::writable;
+ page_flags |= kapi::memory::page_mapper::flags::writable;
}
if (section.executable())
{
- page_flags |= page_mapper::flags::executable;
+ page_flags |= kapi::memory::page_mapper::flags::executable;
}
auto is_prefix_of_name = [=](auto prefix) -> bool {
@@ -101,7 +101,7 @@ namespace teachos::memory::x86_64
if (!std::ranges::any_of(user_accessible_prefixes, is_prefix_of_name))
{
- page_flags |= page_mapper::flags::supervisor_only;
+ page_flags |= kapi::memory::page_mapper::flags::supervisor_only;
}
for (auto i = 0uz; i < number_of_pages; ++i)
@@ -110,4 +110,4 @@ namespace teachos::memory::x86_64
}
}
-} // namespace teachos::memory::x86_64 \ No newline at end of file
+} // namespace arch::memory \ No newline at end of file