Autor Thema: Mein Paging bricht während der initialisierung ab  (Gelesen 2456 mal)

Billy G.

  • Beiträge: 26
    • Profil anzeigen
Gespeichert
« 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.

Programm Noob

  • Gast
Gespeichert
« Antwort #1 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 

Billy G.

  • Beiträge: 26
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 21. August 2010, 11:49 »
Er bleibt bei asm volatile("mov %0, %%cr3":: "r"(dir->physicalAddr));

hängen.

 

Einloggen