ARM-Assembly "rene" -Anweisung

8

Ich bin gerade dabei zu verstehen, was es braucht, damit der Linux-Kernel booten kann. Ich stöberte durch den Linux-Kernel-Source-Tree, insbesondere für die ARM-Architektur, bis ich auf diese Assembly-Anweisung retne lr in arch/arm/kernel/hyp-stub.S

Vom Konzept her ist es leicht zu verstehen, dass die Anweisung zu der im Verknüpfungsregister gespeicherten Adresse zurückkehren soll, wenn das Z-Flag 0 ist. Was ich suche, ist, wo diese ARM-Assembleranweisung tatsächlich dokumentiert ist.

Ich habe im ARM Architecture Referenzhandbuch ARMv7- gesucht. A und ARMv7-R-Ausgabe Abschnitt A8.8 und konnte die Beschreibung der Anweisung nicht finden.

Das Überlappen der Quellen und die Überprüfung, ob es sich um eine ARM-spezifische GNU AS-Erweiterung gehandelt hat, hat sich nicht geändert etwas Besonderes.

Eine Google-Suche mit den Abfragen "arm assembly ret instruction", "arm return instruction" und ähnlichem in den Zeilen hat auch nichts Nützliches ergeben. Sicher muss ich an den falschen Stellen suchen oder ich muss etwas vermissen.

Jede Klärung wird sehr geschätzt.

    
jrcatbagan 29.12.2014, 18:20
quelle

1 Antwort

11

Die Sprache der architektonischen Assemblierung ist eine Sache, der Code der realen Welt ist eine andere. Sobald Assembler-Pseudo-Ops und Makros ins Spiel kommen, hilft eine Vertrautheit sowohl mit der Toolchain als auch mit der in Frage kommenden Codebasis. Linux ist besonders unangenehm, da viele der Baugruppenquellen mehrere Schichten von Assembler-Makros und CPP-Makros enthalten. Wenn Sie wissen, wonach Sie suchen müssen, und folgen Sie dem Header-Pfad zu arch/arm/include/asm/assembler.h , finden Sie schließlich diese komplizierte Bestie:

%Vor%

Der Zweck davon ist geben den Architektur-bevorzugten Return-Befehl zugunsten von Mikroarchitekturen mit einem Return-Stack , während der gleiche Code für ältere Architekturen noch kompiliert werden kann.

    
Notlikethat 29.12.2014, 18:50
quelle

Tags und Links