csrsPseudoelement

csrs

Pseudoelement
RISC-V Assembler Referenz

lyszt.net behandelt csrs und andere RISC-V-Befehle ausführlicher.

Beschreibung

csrs setzt Bits in einem Steuerregister. Ein Steuer- und Statusregister, oder CSR, enthält den Prozessorzustand wie die Adresse des Trap-Handlers und die Interrupt-Schalter (siehe csrrw). Die folgende Form setzt jedes Bit des CSR, das in rs 1 ist, und lässt die anderen Bits unverändert.

csrs csr, rs

Es ist eine Pseudoinstruktion, ein lesbarer Name, den der Assembler in eine echte Instruktion umschreibt. Sie wird zur unten stehenden Instruktion, wobei rd zero ist, sodass der alte Wert verworfen wird.

csrrs zero, csr, rs

Interrupts werden mit zwei Aufrufen von csrs aktiviert. Der erste setzt Bit 11 von mie, die externe Interrupt-Freigabe. Der zweite setzt Bit 3 von mstatus, die globale Interrupt-Freigabe.

li t0, 0x800
csrs mie, t0
li t0, 8
csrs mstatus, t0

Beide Schalter müssen eingeschaltet sein, bevor der Prozessor einen Interrupt annimmt. Der Button hat außerdem sein eigenes Freigaberegister, das auf der GPIO-Seite beschrieben wird. Siehe csrc zum Löschen von Bits.

Das RISC-V-Handbuch führt csrs und csrc als die Kurzformen zum Setzen und Löschen von CSR-Bits auf, wenn der alte Wert nicht benötigt wird.

Wird erweitert zu

csrrs zero, csr, rs

Der Assembler ersetzt diese Pseudoanweisung durch die oben aufgeführte(n) echte(n) Anweisung(en).

Beispiel

li t0, 8
csrs mstatus, t0   # sets bit 3 of mstatus