aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/memory/page_table.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-16 10:29:30 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-29 09:05:04 +0200
commit1b964278762dde86b0b737bd9a34fec569339f54 (patch)
tree7fe0f4707e05f46461f03744d178f413b7bbca28 /arch/x86_64/src/memory/page_table.cpp
parentd906d70c94c2a40d5fc6fd26056c7bc57d540002 (diff)
downloadkernel-1b964278762dde86b0b737bd9a34fec569339f54.tar.xz
kernel-1b964278762dde86b0b737bd9a34fec569339f54.zip
x86_64: use p1204 project layout
Diffstat (limited to 'arch/x86_64/src/memory/page_table.cpp')
-rw-r--r--arch/x86_64/src/memory/page_table.cpp82
1 files changed, 0 insertions, 82 deletions
diff --git a/arch/x86_64/src/memory/page_table.cpp b/arch/x86_64/src/memory/page_table.cpp
deleted file mode 100644
index 2180420..0000000
--- a/arch/x86_64/src/memory/page_table.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-#include <arch/memory/page_table.hpp>
-
-#include <kapi/memory.hpp>
-
-#include <algorithm>
-#include <bit>
-#include <cstddef>
-#include <cstdint>
-#include <optional>
-#include <utility>
-
-namespace arch::memory
-{
-
- auto page_table::entry::clear() noexcept -> void
- {
- m_raw = 0;
- }
-
- auto page_table::entry::present() const noexcept -> bool
- {
- return (all_flags() & flags::present) != flags::empty;
- }
-
- auto page_table::entry::huge() const noexcept -> bool
- {
- return (all_flags() & flags::huge_page) != flags::empty;
- }
-
- auto page_table::entry::all_flags() const noexcept -> flags
- {
- return std::bit_cast<flags>(m_raw & ~frame_number_mask);
- }
-
- auto page_table::entry::all_flags(flags flags) noexcept -> void
- {
- m_raw = (m_raw & ~frame_number_mask) | std::to_underlying(flags);
- }
-
- auto page_table::entry::operator|=(flags rhs) noexcept -> page_table::entry &
- {
- auto raw_flags = std::to_underlying(rhs) & ~frame_number_mask;
- m_raw |= raw_flags;
- return *this;
- }
-
- auto page_table::entry::frame() const noexcept -> std::optional<kapi::memory::frame>
- {
- if (present())
- {
- return kapi::memory::frame::containing(kapi::memory::physical_address{m_raw & frame_number_mask});
- }
- return std::nullopt;
- }
-
- auto page_table::entry::frame(kapi::memory::frame frame, flags flags) noexcept -> void
- {
- m_raw = (frame.start_address().raw() | static_cast<std::uint64_t>(flags));
- };
-
- auto page_table::operator[](std::size_t index) -> entry &
- {
- return m_entries.at(index);
- }
-
- auto page_table::operator[](std::size_t index) const -> entry const &
- {
- return m_entries.at(index);
- }
-
- auto page_table::clear() noexcept -> void
- {
- std::ranges::for_each(m_entries, &page_table::entry::clear);
- }
-
- auto page_table::empty() const noexcept -> bool
- {
- return std::ranges::all_of(m_entries,
- [](auto const & entry) -> auto { return entry.all_flags() == entry::flags::empty; });
- }
-
-} // namespace arch::memory