From 779c5755f6ddcc8680a2b4a3fa3606d930309ecc Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Tue, 2 Sep 2014 18:11:49 +0200 Subject: Finally Fix paging bug! Hooray! --- kernel/vmem.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) (limited to 'kernel/vmem.c') 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(); -- cgit v1.2.3