Page 1 of 1

Would it be smart to map all physical addresses to virtua...

Posted: Sat Dec 24, 2016 8:16 am
by Ycep
...l while boot? If not, why? What would be pros and cons of it?

Re: Would it be smart to map all physical addresses to virtu

Posted: Sat Dec 24, 2016 9:23 am
by BrightLight
It makes perfect sense to map all physical addresses to virtual address during booting. It makes some things (e.g. ACPI table access, PCIe configuration, ...) easier to do. For 64-bit systems, it makes sense to leave the lower half of the 48-bit address space for general purpose use, and the upper half to map all physical addresses.

Re: Would it be smart to map all physical addresses to virtu

Posted: Sat Dec 24, 2016 10:53 am
by Ycep
What is wrong with this then...

Code: Select all

PageDir* d=(PageDir*)AllocBlock(12288);
memclr(d,sizeof(PageDir));
uint page=0, frame=0;
for(uint j=0;j<SystemBootInfo->memoryLo/4096;j++)
{
	PageTable* t=new PageTable;
	for(uint i=0;i<1024;i++,frame+=4096)
	{
		AddAtrib(&page,pteUser);
		SetFrame(&page,(uint)frame);
		AddAtrib(&page,ptePresent);
		t->entries[pteIndex(frame)]=frame;
	}
	AddAtrib(&d->entries[j], pdeWritable);
	AddAtrib(&d->entries[j], pdePresent);
	SetFrame(&d->entries[j], (uint)t);
}
AddAtrib(), SetFrame() and pteIndex() are checked to be working.

Re: Would it be smart to map all physical addresses to virtu

Posted: Sat Dec 24, 2016 12:13 pm
by iansjack
What makes you think anything is wrong with it? Have you checked the generated page table to make sure it is correct?

Re: Would it be smart to map all physical addresses to virtu

Posted: Sun Dec 25, 2016 10:12 am
by Ycep
Finally I finished the skeleton of my memory managament. ( I sound nerdy)