From f894d5073884dea331abe90299b5058f26c27c5a Mon Sep 17 00:00:00 2001 From: Nic Gaffney Date: Wed, 24 Apr 2024 15:19:51 -0500 Subject: Paging --- src/kernel/paging/paging.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/kernel/paging/paging.c') diff --git a/src/kernel/paging/paging.c b/src/kernel/paging/paging.c index 6a482c8..9785365 100644 --- a/src/kernel/paging/paging.c +++ b/src/kernel/paging/paging.c @@ -37,13 +37,13 @@ void *get_physaddr(void *virtualaddr) { unsigned long pdindex = (unsigned long)virtualaddr >> 22; unsigned long ptindex = (unsigned long)virtualaddr >> 12 & 0x03FF; - unsigned long *pd = (unsigned long *)page_dir; + unsigned long *pd = (unsigned long *)0xFFFFF000; if (!(pd[pdindex] & 1)) - panic("Unimplemented - getphysaddr - pd[%d]", pdindex); + return 0x0; unsigned long *pt = ((unsigned long *)0xFFC00000) + (0x400 * pdindex); if (!(pt[ptindex] & 1)) - panic("Unimplemented - getphysaddr - pt[%d]", ptindex); + return 0x0; return (void *)((pt[ptindex] & ~0xFFF) + ((unsigned long)virtualaddr & 0xFFF)); @@ -53,14 +53,14 @@ void map_page(void *physaddr, void *virtualaddr, uint8_t flags) { unsigned long pdindex = (unsigned long)virtualaddr >> 22; unsigned long ptindex = (unsigned long)virtualaddr >> 12 & 0x03FF; - unsigned long *pd = (unsigned long *)page_dir; + unsigned long *pd = (unsigned long *)0xFFFFF000; if (!(pd[pdindex] & 1)) { pd[pdindex] = make_pagedir((uint32_t *)0xFFC00000 + (0x400 * pdindex), 3); } unsigned long *pt = ((unsigned long *)0xFFC00000) + (0x400 * pdindex); - if (pt[ptindex] & 1) + if (!(pt[ptindex] & 1)) panic("Unimplemented - map_page - pt[%d]", ptindex); pt[ptindex] = ((unsigned long)physaddr) | (flags & 0xFFF) | 0x01; // Present -- cgit v1.2.3