csrrc
lyszt.net tratta csrrc e altre istruzioni RISC-V in modo più dettagliato.
Descrizione
csrrc legge un registro di controllo e cancella dei bit al suo interno. Un registro di controllo e stato, o CSR, contiene lo stato del processore come l'indirizzo del gestore delle trap e gli interruttori degli interrupt (vedi csrrw). Il nome è l'abbreviazione di lettura atomica e cancellazione di bit nel CSR. Il vecchio valore del CSR viene scritto in rd, poi ogni bit che è 1 in rs1 viene azzerato nel CSR. I bit che sono 0 in rs1 mantengono il loro valore.
csrrc rd, csr, rs1
Il registro rs1 funziona come maschera, un pattern i cui bit a 1 scelgono quali bit modificare. Le righe seguenti cancellano il bit 3 di mstatus, il che disattiva l'abilitazione globale degli interrupt, e lasciano il valore precedente in t1.
li t0, 8 csrrc t1, mstatus, t0
Quando rs1 è zero, il CSR viene letto e mai scritto. Quando rd è zero, il vecchio valore viene scartato, ovvero la forma abbreviata csrc. Vedi csrrs per impostare i bit e csrrw per l'elenco dei CSR in questo simulatore.
Il manuale RISC-V afferma che csrrc con rs1=x0 non scrive affatto il CSR.
Esempio
li t0, 8 csrrc t1, mstatus, t0 # clears bit 3 of mstatus, t1 = old mstatus
