summaryrefslogtreecommitdiff
path: root/kernel/vmem.c
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-12-04 23:30:15 +0100
committerMichal Idziorek <m.i@gmx.at>2014-12-04 23:30:15 +0100
commit41c3e0bc640f570831bd6c18fbfb8c7cec23a43d (patch)
tree487ff1379ad74fa5f610c5b18bcb573faa3f44ba /kernel/vmem.c
parent53a61ec0f257930c2c5eb2ba20cac53d7862c92b (diff)
struggling with gcc -O , and other stuff
Diffstat (limited to 'kernel/vmem.c')
-rw-r--r--kernel/vmem.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/kernel/vmem.c b/kernel/vmem.c
index 5dccc13..a909b1a 100644
--- a/kernel/vmem.c
+++ b/kernel/vmem.c
@@ -299,8 +299,14 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir)
{
ptable* table = (ptable*) pmmngr_alloc_block ();
- pd_entry *oldentry= &(copy_dir->m_entries[PAGE_DIRECTORY_INDEX(virt_addr)]);
- ptable* oldtable=pd_entry_get_frame(oldentry);
+ pd_entry *oldentry=NULL;
+ ptable* oldtable=NULL;
+
+ if(copy_dir!=NULL)
+ {
+ oldentry=&(copy_dir->m_entries[PAGE_DIRECTORY_INDEX(virt_addr)]);
+ oldtable=pd_entry_get_frame(oldentry);
+ }
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"oldtable at: 0x%08X",oldtable);
if (!table)panic(FOOLOS_MODULE_NAME,"unable to alloc table");
@@ -308,6 +314,7 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir)
for (int i=0, virt=virt_addr; i<1024; i++, virt+=4096)
{
+ //log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"i = %d",i);
phys_addr=pmmngr_alloc_block(); // get free space from the memory manager
if (!phys_addr)panic(FOOLOS_MODULE_NAME,"unable to alloc spce for frame");
@@ -350,8 +357,14 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir)
{
ptable* table = (ptable*) pmmngr_alloc_block ();
- pd_entry *oldentry= &(copy_dir->m_entries[PAGE_DIRECTORY_INDEX(virt_addr)]);
- ptable* oldtable=pd_entry_get_frame(oldentry);
+ pd_entry *oldentry=NULL;
+ ptable* oldtable=NULL;
+
+ if(copy_dir!=NULL)
+ {
+ oldentry=&(copy_dir->m_entries[PAGE_DIRECTORY_INDEX(virt_addr)]);
+ oldtable=pd_entry_get_frame(oldentry);
+ }
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"oldtable at: 0x%08X",oldtable);
if (!table)panic(FOOLOS_MODULE_NAME,"unable to alloc table");