diff --git a/kernel/include/kernel/Memory/Heap.h b/kernel/include/kernel/Memory/Heap.h index 9f34b869..e742cb86 100644 --- a/kernel/include/kernel/Memory/Heap.h +++ b/kernel/include/kernel/Memory/Heap.h @@ -15,9 +15,6 @@ namespace Kernel class PhysicalRange { - public: - static constexpr paddr_t invalid = ~paddr_t(0); - public: PhysicalRange(paddr_t, size_t); paddr_t reserve_page(); diff --git a/kernel/kernel/Memory/Heap.cpp b/kernel/kernel/Memory/Heap.cpp index 08562561..badb0281 100644 --- a/kernel/kernel/Memory/Heap.cpp +++ b/kernel/kernel/Memory/Heap.cpp @@ -55,7 +55,7 @@ namespace Kernel paddr_t PhysicalRange::reserve_page() { if (m_free_list == nullptr) - return invalid; + return 0; node* page = m_free_list; ASSERT(page->next == nullptr); @@ -161,7 +161,7 @@ namespace Kernel paddr_t Heap::take_free_page() { for (auto& range : m_physical_ranges) - if (paddr_t page = range.reserve_page(); page != PhysicalRange::invalid) + if (paddr_t page = range.reserve_page()) return page; ASSERT_NOT_REACHED(); } diff --git a/kernel/kernel/Process.cpp b/kernel/kernel/Process.cpp index be5c4f2f..441aaf36 100644 --- a/kernel/kernel/Process.cpp +++ b/kernel/kernel/Process.cpp @@ -75,14 +75,14 @@ namespace Kernel uint8_t flags = MMU::Flags::UserSupervisor | MMU::Flags::Present; if (elf_program_header.p_flags & LibELF::PF_W) flags |= MMU::Flags::ReadWrite; - size_t page_start = elf_program_header.p_vaddr / 4096; - size_t page_end = BAN::Math::div_round_up(elf_program_header.p_vaddr + elf_program_header.p_memsz, 4096); + size_t page_start = elf_program_header.p_vaddr / PAGE_SIZE; + size_t page_end = BAN::Math::div_round_up(elf_program_header.p_vaddr + elf_program_header.p_memsz, PAGE_SIZE); MUST(process->m_allocated_pages.reserve(page_end - page_start + 1)); for (size_t page = page_start; page <= page_end; page++) { auto paddr = Heap::get().take_free_page(); MUST(process->m_allocated_pages.push_back(paddr)); - process->m_mmu->map_page_at(paddr, page * 4096, flags); + process->m_mmu->map_page_at(paddr, page * PAGE_SIZE, flags); } process->m_mmu->load(); memcpy((void*)elf_program_header.p_vaddr, elf->data() + elf_program_header.p_offset, elf_program_header.p_filesz);