diff --git a/lib/pmemorymanager.ppu b/lib/pmemorymanager.ppu index 51967737..5b33d802 100644 Binary files a/lib/pmemorymanager.ppu and b/lib/pmemorymanager.ppu differ diff --git a/src/pmemorymanager.pas b/src/pmemorymanager.pas index b3ff0bba..2bf9e266 100644 --- a/src/pmemorymanager.pas +++ b/src/pmemorymanager.pas @@ -33,6 +33,10 @@ begin Present:= True; MappedTo:= 0; end; + with PhysicalMemory[2] do begin + Present:= True; + MappedTo:= 0; + end; console.writestringln('PMM: INIT END.'); end; diff --git a/src/vmemorymanager.pas b/src/vmemorymanager.pas index 3fce78f4..9bc6e2aa 100644 --- a/src/vmemorymanager.pas +++ b/src/vmemorymanager.pas @@ -57,6 +57,15 @@ var begin console.writestringln('VMM: INIT BEGIN.'); PageDirectory:= load_current_page_directory; + PageDirectory^[KERNEL_VIRTUAL_BASE + 1].Present:= True; + PageDirectory^[KERNEL_VIRTUAL_BASE + 1].PageSize:= True; + PageDirectory^[KERNEL_VIRTUAL_BASE + 1].Writable:= True; + PageDirectory^[KERNEL_VIRTUAL_BASE + 1].Address:= (1 SHL 22); + + PageDirectory^[KERNEL_VIRTUAL_BASE + 2].Present:= True; + PageDirectory^[KERNEL_VIRTUAL_BASE + 2].PageSize:= True; + PageDirectory^[KERNEL_VIRTUAL_BASE + 2].Writable:= True; + PageDirectory^[KERNEL_VIRTUAL_BASE + 2].Address:= (2 SHL 22); console.writestringln('VMM: INIT END.'); end; @@ -69,7 +78,7 @@ var begin new_page:= false; if PageDirectory^[page_number].Present then exit; - if PageDirectory^[page_number].Reserved then exit; + //if PageDirectory^[page_number].Reserved then exit; block:= pmemorymanager.new_block(uint32(PageDirectory)); if block < 2 then begin GPF;