hi,
ich habe (glaube ich) eine kleines problem beim paging. ich habe folgenden code:
wenn ich jetzt auf den auf die 4 page_dir eintraege zugreife, funktioniert das. aber beim 5. eintrag (present=0) bekomme wie erwartet eine page fault exception und danach gleich eine gerneral protection exception (die ich mir nicht wirklich erklären kann). hat jemand eine idee woran das liegen kann?
ich habe (glaube ich) eine kleines problem beim paging. ich habe folgenden code:
Code: [Auswählen]
%define PAGE_SIZE 4096
%define PAGE_DIR_ENTRIES 1024
%define PAGE_TABLE_ENTRIES 1024
[section .text]
setup_paging:
pusha
; setup page table
mov eax,0x03; address
xor ecx,ecx ; count
.loop1:
mov [page_table+4*ecx],eax
add eax,PAGE_SIZE
inc ecx
cmp ecx,PAGE_TABLE_ENTRIES
jl .loop1
; setup page dir
mov eax,page_table
or eax,0x02
xor ecx,ecx
.loop2
mov [page_dir+4*ecx],eax
inc ecx
cmp ecx,PAGE_DIR_ENTRIES
jl .loop2
or eax,0x03
mov [page_dir],eax
mov [page_dir+4],eax
mov [page_dir+8],eax
mov [page_dir+12],eax
; enable pageing
mov eax,page_dir
mov cr3,eax
mov eax,cr0
or eax,0x80000000
mov cr0,eax
popa
ret
[section .bss]
align 4096
page_dir: resd 1024
align 4096
page_table: resd 1024wenn ich jetzt auf den auf die 4 page_dir eintraege zugreife, funktioniert das. aber beim 5. eintrag (present=0) bekomme wie erwartet eine page fault exception und danach gleich eine gerneral protection exception (die ich mir nicht wirklich erklären kann). hat jemand eine idee woran das liegen kann?

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert