Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Billy G. am 21. August 2010, 11:10

Titel: Mein Paging bricht während der initialisierung ab
Beitrag 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.
Titel: Re:Mein Paging bricht während der initialisierung ab
Beitrag von: Programm Noob am 21. August 2010, 11:17
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 
Titel: Re:Mein Paging bricht während der initialisierung ab
Beitrag von: Billy G. am 21. August 2010, 11:49
Er bleibt bei asm volatile("mov %0, %%cr3":: "r"(dir->physicalAddr));

hängen.