aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/x86_64/include/arch/memory/paging/page_entry.hpp3
-rw-r--r--arch/x86_64/include/arch/memory/paging/page_mapper.hpp12
-rw-r--r--arch/x86_64/src/memory/paging/page_entry.cpp4
3 files changed, 11 insertions, 8 deletions
diff --git a/arch/x86_64/include/arch/memory/paging/page_entry.hpp b/arch/x86_64/include/arch/memory/paging/page_entry.hpp
index 109735d..2d97d77 100644
--- a/arch/x86_64/include/arch/memory/paging/page_entry.hpp
+++ b/arch/x86_64/include/arch/memory/paging/page_entry.hpp
@@ -59,8 +59,9 @@ namespace teachos::arch::memory::paging
* calculate_physical_address() will return the new address instead of the old one.
*
* @param frame Physical frame that contains the address we want to copy into our underlying std::bitset.
+ * @param flags Entry flags which will be set on the entry
*/
- auto set_entry(allocator::physical_frame frame, std::bitset<64U> additional_flags) -> void;
+ auto set_entry(allocator::physical_frame frame, std::bitset<64U> flags) -> void;
/**
* @brief Checks if the given std::bitset is a subset or equivalent to the underlying std::bitset, meaning that all
diff --git a/arch/x86_64/include/arch/memory/paging/page_mapper.hpp b/arch/x86_64/include/arch/memory/paging/page_mapper.hpp
index c82b08c..069161f 100644
--- a/arch/x86_64/include/arch/memory/paging/page_mapper.hpp
+++ b/arch/x86_64/include/arch/memory/paging/page_mapper.hpp
@@ -34,13 +34,15 @@ namespace teachos::arch::memory::paging
auto translate_address(std::size_t virtual_address) -> std::optional<std::size_t>;
/**
- * @brief TODO
+ * @brief Maps a virtual page to a physical frame in the page table with the specified flags.
*
- * @param allocator
- * @param page
- * @param frame
- * @param flags
+ * @param allocator Reference to the area frame allocator, which is used to allocate frames when a new page table is
+ * required.
+ * @param page Reference to the virtual page that is being mapped.
+ * @param frame The physical frame that the virtual page will be mapped to.
+ * @param flags A bitset of flags that configure the page table entry for this mapping.
*/
+
auto map_page_to_frame(memory::allocator::area_frame_allocator & allocator, virtual_page const & page,
memory::allocator::physical_frame const & frame, entry::bitset flags) -> void;
} // namespace teachos::arch::memory::paging
diff --git a/arch/x86_64/src/memory/paging/page_entry.cpp b/arch/x86_64/src/memory/paging/page_entry.cpp
index 30a8961..8a7442e 100644
--- a/arch/x86_64/src/memory/paging/page_entry.cpp
+++ b/arch/x86_64/src/memory/paging/page_entry.cpp
@@ -33,10 +33,10 @@ namespace teachos::arch::memory::paging
auto entry::contains_flags(std::bitset<64U> other) const -> bool { return (flags & other) == other; }
- auto entry::set_entry(allocator::physical_frame frame, std::bitset<64U> additional_flags) -> void
+ auto entry::set_entry(allocator::physical_frame frame, std::bitset<64U> flags) -> void
{
exception_handling::assert((frame.start_address() & ~0x000fffff'fffff000) == 0,
"[Paging Entry] Start address is not aligned with page");
- flags = std::bitset<64U>(frame.start_address()) | additional_flags;
+ flags = std::bitset<64U>(frame.start_address()) | flags;
}
} // namespace teachos::arch::memory::paging