diff options
| author | Nic Gaffney <gaffney_nic@protonmail.com> | 2024-04-24 15:19:51 -0500 |
|---|---|---|
| committer | Nic Gaffney <gaffney_nic@protonmail.com> | 2024-04-24 15:19:51 -0500 |
| commit | f894d5073884dea331abe90299b5058f26c27c5a (patch) | |
| tree | 2409c35ca04a9779b86dc5e8db9faadc1effc6a2 | |
| parent | 2d54f6f129cedad272084f4cfe3731309f4c462e (diff) | |
| download | gftos-main.tar.gz | |
| -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 |
