diff --git a/kernel/main.cc b/kernel/main.cc index fdf2b05..22f2e4a 100644 --- a/kernel/main.cc +++ b/kernel/main.cc @@ -55,7 +55,7 @@ extern "C" int main() { Multiboot::Module* initrd = Multiboot::getModule(0); DBG << "initrd address: " << hex << initrd->getStartAddress() << endl << "initrd size: " << initrd->getSize() << endl; memcpy((void *)0x4000000, initrd->getStartAddress(), initrd->getSize()); - mark_pageframes(0x400000, 0x4000000 + initrd->getSize(), false); + mark_pageframes(0x4000000, 0x4000000 + initrd->getSize(), false); memset(&paging_tree, 0, sizeof(four_lvl_paging_t)); create_basic_page_table(&paging_tree); @@ -89,8 +89,8 @@ extern "C" int main() { uint32_t appsize = (*apps_header)[i]; uintptr_t appstart = (0x4000+offset)<<12; DBG << "app " << i << " size " << appsize << " at " << appstart << endl; - g.vault().scheduler.ready(new Thread(false, (void*)appstart)); - offset += 1+(appsize-1/4096); + g.vault().scheduler.ready(new Thread(false, (void*)appstart, (appsize/4096)+1)); //TODO fix edgecase on size=4096 + offset += 1+(appsize/4096); } //for(void* p=Multiboot::getModule(0)->getStartAddress(); pgetEndAddress(); p=(void*)((uintptr_t)p+4096)){ // DBG << "module at: " << hex << p << endl;