aboutsummaryrefslogtreecommitdiff
path: root/kernel/mm/virtual_mm/virtual_mm.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/mm/virtual_mm/virtual_mm.c')
-rw-r--r--kernel/mm/virtual_mm/virtual_mm.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/kernel/mm/virtual_mm/virtual_mm.c b/kernel/mm/virtual_mm/virtual_mm.c
index 4bdb4ab..3043686 100644
--- a/kernel/mm/virtual_mm/virtual_mm.c
+++ b/kernel/mm/virtual_mm/virtual_mm.c
@@ -16,20 +16,22 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <stdint.h>
-
#include <kernel/halt.h>
-
#include <libk/stdio.h>
-
#include <mm/physical_mm.h>
#include <mm/virtual_mm.h>
+#include <stdint.h>
extern uint32_t kernel_start;
extern uint32_t kernel_end;
uint32_t *current_page_directory = 0;
+/* Kernel's page directory */
+uint32_t page_directory[1024] ALIGNED(4096);
+/* Page table for the first 4 MiB */
+uint32_t table[1024] ALIGNED(4096);
+
ALWAYS_INLINE void
virtual_mm_load_page_directory(uint32_t *page_directory)
{
@@ -59,10 +61,6 @@ virtual_mm_enable_paging(void)
void
virtual_mm_initialize(void)
{
- uint32_t *table = physical_mm_allocate_block();
- if (!table)
- ASSERT_NOT_REACHED();
-
for (uint32_t i = 0; i < 1024; i++)
table[i] = 0;
@@ -71,11 +69,6 @@ virtual_mm_initialize(void)
for (uint32_t i = 0; i < 1024; i++)
table[i] = PTE_FRAME(i) | PTE_PRESENT(1) | PTE_WRITABLE(1);
- uint32_t *page_directory = physical_mm_allocate_block();
- if (!page_directory)
- ASSERT_NOT_REACHED();
- printk("debug", "Page directory is at: 0x%x", page_directory);
-
for (uint32_t i = 0; i < 1024; i++)
page_directory[i] = 0;