Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: zement am 28. November 2010, 15:26

Titel: Paging und User Mode
Beitrag 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
Titel: Re:Paging und User Mode
Beitrag von: kevin 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).
Titel: Re:Paging und User Mode
Beitrag von: zement 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 (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