summaryrefslogtreecommitdiff
path: root/kernel/vmem.c
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2014-09-02 18:11:49 +0200
committerMichal Idziorek <m.i@gmx.at>2014-09-02 18:11:49 +0200
commit779c5755f6ddcc8680a2b4a3fa3606d930309ecc (patch)
tree36437d59d94ea70b1bf8b34c890db5cb01100c68 /kernel/vmem.c
parent1e00cdb70f80705751a6f84266171654ed3ab523 (diff)
Finally Fix paging bug! Hooray!
Diffstat (limited to 'kernel/vmem.c')
-rw-r--r--kernel/vmem.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/kernel/vmem.c b/kernel/vmem.c
index 741a1e8..cd6bc93 100644
--- a/kernel/vmem.c
+++ b/kernel/vmem.c
@@ -232,15 +232,15 @@ void vmem_init(uint32_t vesa_physbase)
//! create a new page
pt_entry page=0;
pt_entry_add_attrib (&page, I86_PTE_PRESENT);
+ pt_entry_add_attrib (&page, I86_PTE_WRITABLE);
pt_entry_set_frame (&page, frame);
//! ...and add it to the page table
table2->m_entries [PAGE_TABLE_INDEX (virt) ] = page;
}
- //! map 1mb to 3gb (where we are at)
-
- uint32_t vesa_mapped=0x1000*1024;
+ //uint32_t vesa_mapped=0x1000*1024;
+ uint32_t vesa_mapped=vesa_physbase;
for (int i=0, frame=vesa_physbase, virt=vesa_mapped; i<1024; i++, frame+=4096, virt+=4096)
{
@@ -248,7 +248,7 @@ void vmem_init(uint32_t vesa_physbase)
//! create a new page
pt_entry page=0;
pt_entry_add_attrib (&page, I86_PTE_PRESENT);
-// pt_entry_add_attrib (&page, I86_PTE_WRITABLE);
+ pt_entry_add_attrib (&page, I86_PTE_WRITABLE);
pt_entry_set_frame (&page, frame);
//! ...and add it to the page table
@@ -275,16 +275,10 @@ void vmem_init(uint32_t vesa_physbase)
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"enabling paging...");
show_cr();
-
- // while(1);
x86_paging_enable();
- x86_paging_disable();
- x86_paging_enable();
- vesa_set_physbase(vesa_mapped);
- // x86_flush_tlb(0);
- // x86_flush_tlb(vesa_physbase);
+ vesa_set_physbase(vesa_mapped);
show_cr();