diff options
| -rw-r--r-- | src/kernel/paging/paging.c | 10 |
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 |
