Autor Thema: Paging und User Mode  (Gelesen 1542 mal)

zement

  • Beiträge: 2
    • Profil anzeigen
Gespeichert
« am: 28. November 2010, 15:26 »
Hallo,

ich habe eine Frage zu Paging:
Wird beim Wechsel in den Usermode das cr3 Register verändert?
Habe dazu nichts im Internet gefunden.

Ich habe nämlich folgendes Problem:
Paging funktioniert, wenn ich einen Task im Kernel-Mode laufen lasse, aber wenn ich den Task im Usermode laufen lasse, bekomme ich immer einen Page Fault bei gleich initialisierten Pagedirectory und Pagetables.

Gruß,
zement

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 28. November 2010, 15:32 »
Nein, cr3 musst du "von Hand" ändern, wenn du ein anderes haben möchtest.

Ich schätze mal, dein Problem ist, dass du vergisst, das User/Supervisor-Bit im Page Directory und den Page Tables zu setzen (Bit 2, also 0x7).
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

zement

  • Beiträge: 2
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 28. November 2010, 17:56 »
Ja, das war der Fehler.
Ich habe mich zu stark auf das Tutorial "Paging Tutorial" (http://www.lowlevel.eu/wiki/Paging_Tutorial) verlassen.

Zitat
const Page_noUsermodeAccess = &b100

Dieses "no" muss wohl weg.

Aber jetzt läufts. Danke, taljeth.

zement

 

Einloggen