csrrc
lyszt.net couvre csrrc et d'autres instructions RISC-V plus en détail.
Description
csrrc lit un registre de contrôle et efface des bits dans celui-ci. Un registre de contrôle et d'état, ou CSR, contient l'état du processeur tel que l'adresse du gestionnaire de piège et les commutateurs d'interruption (voir csrrw). Le nom est l'abréviation de lecture atomique et effacement de bits dans le CSR. L'ancienne valeur du CSR est placée dans rd, puis chaque bit qui vaut 1 dans rs1 est mis à 0 dans le CSR. Les bits qui valent 0 dans rs1 conservent leur valeur.
csrrc rd, csr, rs1
Le registre rs1 sert de masque, un motif dont les bits à 1 choisissent les bits à modifier. Les lignes ci-dessous effacent le bit 3 de mstatus, ce qui désactive l'activation globale des interruptions, et laissent la valeur précédente dans t1.
li t0, 8 csrrc t1, mstatus, t0
Lorsque rs1 est zero, le CSR est lu et jamais écrit. Lorsque rd est zero, l'ancienne valeur est ignorée, ce qui correspond à la notation abrégée csrc. Voir csrrs pour définir des bits et csrrw pour la liste des CSR de ce simulateur.
Le manuel RISC-V indique que csrrc avec rs1=x0 n'écrit pas du tout dans le CSR.
Exemple
li t0, 8 csrrc t1, mstatus, t0 # clears bit 3 of mstatus, t1 = old mstatus
