Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Billy G. am 21. August 2010, 11:10
-
HILFE!!!
Mein Paging bricht immer bei der Funktion "switch_page_directory()" ab.
Es bleibt immer bei der ersten Anweisung in dieser Funktion hängen.
void switch_page_directory(page_directory_t *dir)
{
current_directory = dir;
#ifdef DEBUG
puts("switch_page_directory(): asm volatile(mov %0, %%cr3:: r(dir->physicalAddr));\n");
#endif
asm volatile("mov %0, %%cr3":: "r"(dir->physicalAddr));
uint32_t cr0;
#ifdef DEBUG
puts("switch_page_directory(): asm volatile(mov %%cr0, %0: =r(cr0));\n");
#endif
asm volatile("mov %%cr0, %0": "=r"(cr0));
#ifdef DEBUG
puts("switch_page_directory(): cr0 |= 0x80000000;\n");
#endif
cr0 |= 0x80000000; // Paging aktivieren
#ifdef DEBUG
puts("switch_page_directory(): asm volatile(mov %0, %%cr0:: r(cr0));\n");
#endif
asm volatile("mov %0, %%cr0":: "r"(cr0));
#ifdef DEBUG
puts("switch_page_directory(): done. Jump to initialise_paging()...\n\n");
#endif
}
Danke für alle Antworten.
-
Moin
bleinbt er bei
current_directory = dir;
oder bei
asm volatile("mov %0, %%cr3":: "r"(dir->physicalAddr));
hängen?
komm doch am besten in den IRC Channel #LOST. Da kann man solche Probleme besser lösen.
Programm Noob
-
Er bleibt bei asm volatile("mov %0, %%cr3":: "r"(dir->physicalAddr));
hängen.