diff options
| author | Miguel <m.i@gmx.at> | 2018-09-02 03:53:32 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-09-02 03:53:32 +0200 |
| commit | ab6b44f5197e4c6c19f225f909035385d37883b4 (patch) | |
| tree | 2c07e5bc65cf8e19a6433a7c0c5135eabb56a59c /kernel/vmem.c | |
| parent | c459fab7662eaf45df9994c828065b9fc8d4a8ac (diff) | |
foolsnake showcasing multithreading and our console
Diffstat (limited to 'kernel/vmem.c')
| -rw-r--r-- | kernel/vmem.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/kernel/vmem.c b/kernel/vmem.c index d026e9e..2d3a5e4 100644 --- a/kernel/vmem.c +++ b/kernel/vmem.c @@ -229,7 +229,7 @@ void vmem_free_dir(pdirectory *dir) // PROGRAMM SPACE HARDCODED TO 0x8000000+2 pages and 0x8c00000+1 pages // -pdirectory* vmem_new_space_dir(pdirectory *copy_dir) +pdirectory* vmem_new_space_dir(pdirectory *copy_dir,bool stack_only) { x86_paging_disable(); @@ -352,6 +352,13 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir) virt_addr=0x8000000; for(int j=0;j<2;j++) { + if(stack_only) + { + dir->m_entries[PAGE_DIRECTORY_INDEX(virt_addr)]= + copy_dir->m_entries[PAGE_DIRECTORY_INDEX(virt_addr)]; + virt_addr+=1024*4096; + continue; + } ptable* table = (ptable*) kballoc (1); pd_entry *oldentry=NULL; @@ -362,6 +369,7 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir) oldentry=&(copy_dir->m_entries[PAGE_DIRECTORY_INDEX(virt_addr)]); oldtable=pd_entry_get_frame(oldentry); } + klog("oldtable at: 0x%08X",oldtable); if (!table)kpanic("unable to alloc table"); @@ -405,7 +413,7 @@ pdirectory* vmem_new_space_dir(pdirectory *copy_dir) virt_addr+=1024*4096; } - // programm space + // programm space : stack? virt_addr=0x8c00000; for(int j=0;j<1;j++) { @@ -476,7 +484,7 @@ pdirectory* vmem_init(uint32_t kernel_blocks, uint32_t frameb_addr) { fb_addr=frameb_addr; kernel_pages=kernel_blocks/1024+1; - return vmem_new_space_dir(NULL); + return vmem_new_space_dir(NULL,false); } |
