WinFuture-Forum.de: Paging auf dem x86 - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Paging auf dem x86


#1 Mitglied ist offline   HackZero 

  • Gruppe: aktive Mitglieder
  • Beiträge: 903
  • Beigetreten: 07. Januar 02
  • Reputation: 0

geschrieben 20. Januar 2003 - 13:10

Kennt sich jemand ein bisserl damit aus?

Bei mir will das einfach nicht so richtig klappen, ich habe jetzt die Funktion zum Aktivieren des Pagings so weit gekürzt wie möglich, aber geht immer noch nicht:

BOOL StrippedDown_VmmInitialize()
{
  PLONG PageDir = MmAllocPage(&PoolExt);
  PLONG PageTbl = MmAllocPage(&PoolExt);
  PageDir[0] = (LONG)PageTbl | 3;
  LONG i;
  for (i = 1; i < 1024; i++)
    PageDir[i] = 0 | 2;

  LONG Address = 0;
  for (i = 0; i < 1024; i++)
  {
    PageTbl[i] = Address | 3;
    Address += 4096;
  }

  WriteCR3(PageDir);
  WriteCR0(ReadCR0() | 0x80000000);
  for(;;);
  return TRUE;
}


PLONG ist ein long* und LONG ein long, MmAllocPage() alloziiert ein 4KB grosses Speicherstück in einem Speicherpool, PoolExt ist ein Pool mit dem Speicher nach dem Kernel bis ans Ende. Die WriteCR* und ReadCR* sind in einem externen Assemblerfile und der Kernel wird an 0x100000 geladen ...

Der Code wirft einfach immer einen GPF :D :D
0

Anzeige



#2 Mitglied ist offline   HackZero 

  • Gruppe: aktive Mitglieder
  • Beiträge: 903
  • Beigetreten: 07. Januar 02
  • Reputation: 0

geschrieben 22. Januar 2003 - 16:50

GRUB hat da irgendwas vermasselt, mit meinem alten Bootloader geht das einwandfrei ..................... naja, eigentlich mag ich Grub sowieso nich :unsure:
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0