aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kernel/paging/paging.c10
1 files changed, 5 insertions, 5 deletions
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