From 69a92ce3077f01ce43daef5681db298594a4badc Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 16 Mar 2026 19:03:53 +0100 Subject: x86_64/memory: remove recursive mapping --- arch/x86_64/src/memory/scoped_mapping.cpp | 69 ------------------------------- 1 file changed, 69 deletions(-) delete mode 100644 arch/x86_64/src/memory/scoped_mapping.cpp (limited to 'arch/x86_64/src/memory/scoped_mapping.cpp') diff --git a/arch/x86_64/src/memory/scoped_mapping.cpp b/arch/x86_64/src/memory/scoped_mapping.cpp deleted file mode 100644 index dde1dda..0000000 --- a/arch/x86_64/src/memory/scoped_mapping.cpp +++ /dev/null @@ -1,69 +0,0 @@ -#include "arch/memory/scoped_mapping.hpp" - -#include "kapi/memory.hpp" -#include "kapi/system.hpp" - -#include "arch/memory/mmu.hpp" -#include "arch/memory/page_table.hpp" -#include "arch/memory/paging_root.hpp" - -#include -#include - -namespace arch::memory -{ - - scoped_mapping::scoped_mapping(scoped_mapping && other) noexcept - : m_page{std::exchange(other.m_page, kapi::memory::page{})} - , m_mapper{std::exchange(other.m_mapper, nullptr)} - , m_mapped{std::exchange(other.m_mapped, false)} - {} - - scoped_mapping::scoped_mapping(kapi::memory::page page, kapi::memory::page_mapper & mapper) - : m_page{page} - , m_mapper{&mapper} - , m_mapped{false} - { - if (paging_root::get()->translate(page)) - { - kapi::system::panic("[MEM] Tried to map a page that is already mapped!"); - } - } - - scoped_mapping::~scoped_mapping() noexcept - { - if (m_mapped) - { - unmap(); - tlb_flush(m_page.start_address()); - } - } - - auto scoped_mapping::operator=(scoped_mapping && other) noexcept -> scoped_mapping & - { - swap(*this, other); - return *this; - } - - auto scoped_mapping::map(kapi::memory::frame frame, page_table::entry::flags flags) -> std::byte * - { - auto result = m_mapper->map(m_page, frame, to_mapper_flags(flags)); - m_mapped = true; - return result; - } - - auto scoped_mapping::unmap() -> void - { - m_mapper->unmap(m_page); - m_mapped = false; - } - - auto swap(scoped_mapping & lhs, scoped_mapping & rhs) -> void - { - using std::swap; - swap(lhs.m_page, rhs.m_page); - swap(lhs.m_mapper, rhs.m_mapper); - swap(lhs.m_mapped, rhs.m_mapped); - } - -} // namespace arch::memory \ No newline at end of file -- cgit v1.2.3