csrspseudo

csrs

pseudo
Assembleur RISC-V Référence

lyszt.net couvre csrs et d'autres instructions RISC-V plus en détail.

Description

csrs définit des bits dans un registre de contrôle. Un registre de contrôle et d'état, ou CSR, contient l'état du processeur tel que l'adresse du gestionnaire de trappe et les commutateurs d'interruption (voir csrrw). La forme ci-dessous définit chaque bit du CSR qui vaut 1 dans rs et laisse les autres bits inchangés.

csrs csr, rs

C'est une pseudo-instruction, un nom lisible que l'assembleur réécrit en une instruction réelle. Elle devient l'instruction ci-dessous, où rd est zero afin que l'ancienne valeur soit ignorée.

csrrs zero, csr, rs

Les interruptions sont activées avec deux appels à csrs. Le premier définit le bit 11 de mie, l'activation des interruptions externes. Le second définit le bit 3 de mstatus, l'activation globale des interruptions.

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

Les deux commutateurs doivent être activés avant que le processeur prenne une interruption. Le bouton possède également son propre registre d'activation, décrit sur la page GPIO. Voir csrc pour effacer des bits.

Le manuel RISC-V répertorie csrs et csrc comme les raccourcis pour définir et effacer les bits d'un CSR lorsque l'ancienne valeur n'est pas nécessaire.

Se développe en

csrrs zero, csr, rs

L'assembleur remplace cette pseudo-instruction par la ou les instructions réelles listées ci-dessus.

Exemple

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