Najut:
Also hierder Konstruktor von mein C++ Paging class:
CPaging::CPaging()
{
Pagedirectory=(Pagedir *)PMemManager.getfreepage();
Pagedirectory->Pagetable[0]=(Pagetab *)((dd)PMemManager.getfreepage()+3);
dw count=1;
while(count<1024)
{
Pagedirectory->Pagetable[count]=0;
++count;
}
dd init=0;
while((dd)init<1024)
{
mapmem((void*)(init*0x1000),(void*)(init*0x1000),NDIRTY,NACCESSED,NUS,RW,PRESENT);
++init;
}
enablepaging(Pagedirectory);
}
Die Funktion getfreepage liefert die Adresse einer freien Physikalischen Seite zurück, daran kanns nicht liegen, funktioniert korrekt.
mapmem soll wie der Name sagt die Speicherseiten mappen, funktioniert eigentlich auch.
enablepaging schreibt die übergebene adresse ins cr3 und macht ein or 0x80000000 aufs cr0.
Ich sehs einfach nicht, wahrscheinlich schon Betriebsblind...