Ich versuche zu verstehen, wie Vektoren Seite auf 0xffff0000.
zugeordnet ist Ich verweise 3,14 Kernel.Vektoren Seitenzuordnung in Linux für ARM
Gemäß dem Kommentar in early_trap_init()
traps.c die Vektoren von Entry-armv.S auf Vektor-Seite kopiert werden.
Es scheint early_trap_init()
heißt von devicemaps_init()
mmu.c.
Vor dem Aufruf early_trap_init()
, erstellt es Vektoren Seite mit early_alloc()
und ich konnte keine Zuordnung hier sehen.
Können Sie bitte helfen, zu verstehen, wie Vektoren Seite Mapping getan wird?
ich in Annahme war, dass "zunächst wird Speicher für Vektor-Seite erstellt wird (mit physikalischer Adresse) und Karte an die virtuelle Adresse 0xffff0000 werden dann die Vektoren auf die Vektorseite kopiert ", aber nach dem Anzeigen der Antwort wird der erste Speicher für die Vektorseite erstellt (unter Verwendung von ea rly_alloc(), es gibt die virtuelle Adresse zurück), kopierte Vektoren durch Aufruf von early_trap_init() und danach wird das Mapping für 0xffff0000 für die Vektorseite durchgeführt. Mein Zweifel hier ist, zwei virtuelle Mappings sind für Vektor-Seite passiert? (1. virtuelle Adresse wird von early_alloc() zurückgegeben und 2. macht explizite Zuordnung wie in der obigen Antwort gezeigt). – user3693586
Ja, es gibt mehrere Zuordnungen. Das ist gut? Einige sind lesen/schreiben und andere sind schreibgeschützt. Einige sind für den Benutzerraum zugänglich, andere nicht. * Ich versuche zu verstehen, wie Vektoren Seite auf 0xffff0000 zugeordnet ist. * Ist eine Frage, die ich beantwortete. Du hast nie etwas über einen * Zweifel * über zwei Abbildungen gesagt. –
Anfänglich sind meine Zweifel über Vektorseiten-Mapping, nachdem ich die Antwort gesehen habe, habe ich Zweifel über zwei virtuelle Mappings für Vektor-Seite. – user3693586