Moin zusammen,
ich hab folgendes Problem, von dem ich glaube, dass mein Compiler (DJGPP/gcc Version 4.32) dran schuld ist.
Die Methode
void map(unsigned int* pageDirectory, void* virtual, void* physical, unsigned int flags);
mappt die virtuelle Addresse auf die physische u.s.w., das klappt eigendlich ohne Probleme aber nur mit einem Trick:
Die letzten Zeilen sind:
pageTable[pageNumber] = (u32)physical & 0xFFFFF000;
if(virtual == KERNEL_HEAP) {
debug(pageTable, (p)pageNumber, physical, (p)((u32)physical & 0xFFFFF000));
}
pageTable[pageNumber] = pageTable[pageNumber] | flags;
Diese if-Abfrage ist zwar seltsam, vor allem, da sie nie "auslöst" (ich kann zu 100% sagen, dass die Funktion debug nicht aufgerufen wird, da dann der Prozessor angehalten wird), aber wenn ich die if-Abfrage weglasse, dann funktioniert die Funktion nicht mehr!
Hoffe mein Problem ist verständlich