summaryrefslogtreecommitdiff
path: root/kernel/vmem.c
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-12-09 22:55:14 +0100
committerMichal Idziorek <m.i@gmx.at>2014-12-09 22:55:14 +0100
commitf4518cf996c137e18cd70dd2d23ba9d8cfcfb526 (patch)
tree416952ac9efd8fc0bd7b67cbc50ed8177fac2b56 /kernel/vmem.c
parent7e965f276c47d29969f5470533d40df03536d190 (diff)
passing vesa physbase to vmem and some cleanup
Diffstat (limited to 'kernel/vmem.c')
-rw-r--r--kernel/vmem.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/kernel/vmem.c b/kernel/vmem.c
index 24a2f92..c2892c7 100644
--- a/kernel/vmem.c
+++ b/kernel/vmem.c
@@ -9,6 +9,8 @@
#include "lib/logger/log.h" // logger facilities
#define FOOLOS_MODULE_NAME "vmem"
+static uint32_t phys;
+
// TODO : why is the frame not 0xfffff??
enum PAGE_PTE_FLAGS
{
@@ -293,8 +295,10 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir)
virt_addr+=1024*4096;
}
- phys_addr=0xFc000000;
- virt_addr=0xFc000000;
+ if(phys!=0)
+ {
+ phys_addr=phys;
+ virt_addr=phys;
// vesa
for(int j=0;j<5;j++)
{
@@ -340,6 +344,7 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir)
phys_addr+=1024*4096;
virt_addr+=1024*4096;
}
+ }
// programm space
virt_addr=0x8000000;
@@ -468,8 +473,9 @@ void vmem_set_dir(pdirectory *dir)
-pdirectory* vmem_init()
+pdirectory* vmem_init(uint32_t physbase)
{
+ phys=physbase;
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"init paging");
pdirectory *dir=vmem_new_space_dir(0);
vmem_set_dir(dir);