aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-03-16 22:30:39 +0100
committerFelix Morgner <felix.morgner@ost.ch>2026-03-16 22:30:39 +0100
commit796ce76185b00feb86f6b4f738ac6f953c247116 (patch)
treeefc18c2df1f05e8c60df2a6eda227d53a78ebba3
parent69a92ce3077f01ce43daef5681db298594a4badc (diff)
downloadteachos-796ce76185b00feb86f6b4f738ac6f953c247116.tar.xz
teachos-796ce76185b00feb86f6b4f738ac6f953c247116.zip
arch/x86_64: begin new allocator draft
-rw-r--r--arch/x86_64/CMakeLists.txt1
-rw-r--r--arch/x86_64/include/arch/memory/higher_half_mapper.hpp19
-rw-r--r--arch/x86_64/src/memory/higher_half_mapper.cpp29
3 files changed, 49 insertions, 0 deletions
diff --git a/arch/x86_64/CMakeLists.txt b/arch/x86_64/CMakeLists.txt
index 7bcf7c2..41932c9 100644
--- a/arch/x86_64/CMakeLists.txt
+++ b/arch/x86_64/CMakeLists.txt
@@ -28,6 +28,7 @@ target_sources("x86_64" PRIVATE
# Memory management
"src/memory/kernel_mapper.cpp"
+ "src/memory/higher_half_mapper.cpp"
"src/memory/mmu.cpp"
"src/memory/page_table.cpp"
"src/memory/region_allocator.cpp"
diff --git a/arch/x86_64/include/arch/memory/higher_half_mapper.hpp b/arch/x86_64/include/arch/memory/higher_half_mapper.hpp
new file mode 100644
index 0000000..66fb58b
--- /dev/null
+++ b/arch/x86_64/include/arch/memory/higher_half_mapper.hpp
@@ -0,0 +1,19 @@
+#ifndef TEACHOS_X86_64_HIGHER_HALF_MAPPER_HPP
+#define TEACHOS_X86_64_HIGHER_HALF_MAPPER_HPP
+
+#include "kapi/memory.hpp"
+namespace arch::memory
+{
+
+ struct higher_half_mapper : kapi::memory::page_mapper
+ {
+ auto map(kapi::memory::page page, kapi::memory::frame frame, flags flags) -> std::byte * override;
+
+ auto unmap(kapi::memory::page page) -> void override;
+
+ auto try_unmap(kapi::memory::page page) noexcept -> bool override;
+ };
+
+} // namespace arch::memory
+
+#endif \ No newline at end of file
diff --git a/arch/x86_64/src/memory/higher_half_mapper.cpp b/arch/x86_64/src/memory/higher_half_mapper.cpp
new file mode 100644
index 0000000..9fe3c89
--- /dev/null
+++ b/arch/x86_64/src/memory/higher_half_mapper.cpp
@@ -0,0 +1,29 @@
+#include "arch/memory/higher_half_mapper.hpp"
+
+#include "kapi/memory.hpp"
+
+#include <cstddef>
+
+namespace arch::memory
+{
+
+ auto higher_half_mapper::map(kapi::memory::page page, kapi::memory::frame frame, flags flags) -> std::byte *
+ {
+ static_cast<void>(page);
+ static_cast<void>(frame);
+ static_cast<void>(flags);
+ return nullptr;
+ }
+
+ auto higher_half_mapper::unmap(kapi::memory::page page) -> void
+ {
+ static_cast<void>(page);
+ }
+
+ auto higher_half_mapper::try_unmap(kapi::memory::page page) noexcept -> bool
+ {
+ static_cast<void>(page);
+ return false;
+ }
+
+} // namespace arch::memory \ No newline at end of file