Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: zement 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
-
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).
-
Ja, das war der Fehler.
Ich habe mich zu stark auf das Tutorial "Paging Tutorial" (http://www.lowlevel.eu/wiki/Paging_Tutorial (http://www.lowlevel.eu/wiki/Paging_Tutorial)) verlassen.
const Page_noUsermodeAccess = &b100
Dieses "no" muss wohl weg.
Aber jetzt läufts. Danke, taljeth.
zement