Hallo,
ich habe eine Funktion geschrieben, die im Protected Mode in einer Schleife immer 4096 Byte von der Adresse 0 ins Datensegment kopiert.
Dabei wird per Paging immer ein anderer Speicherbereich an die Adresse 0 gemappt. Mein Problem ist nun, dass ich in der Schleife aber immer nur die Daten lese, die ich schon im ersten Durchlauf geleseh hatte.
Meine Theorie ist nun, dass sich die Adresse aus dem ersten Schleifendurchlauf im TLB befinden, und also gar nicht in der Pagetabelle nach der aktuellen Adresse geschaut wird. Kann ich das irgendwie umgehen wie zB das Leeren der Pipeline mit dem Far-Jump beim einschalten der P-Modes?
Oder ist eventuell auch meine Theorie falsch?
Ich könnte ja einfach mal versuchen von 32 anderen Adressen zu lesen, um den TLB zu leeren, aber wer sagt denn, dass der TLB auch bei heutigen Prozessoren nur 32 Adressen speichert...
MM