csrrs

csrrs

Assembly RISC-V Riferimento

lyszt.net tratta csrrs e altre istruzioni RISC-V in modo più dettagliato.

Descrizione

csrrs legge un registro di controllo e vi imposta dei bit. Un registro di controllo e stato, o CSR, contiene lo stato del processore come l'indirizzo del gestore delle trap e gli interruttori di interrupt (vedi csrrw). Il nome è l'abbreviazione di atomic read and set bits in CSR. Il vecchio valore del CSR viene inserito in rd, poi ogni bit che è 1 in rs1 viene impostato a 1 nel CSR. I bit che sono 0 in rs1 mantengono il loro valore.

csrrs rd, csr, rs1

Il registro rs1 funge da maschera, un pattern i cui bit a 1 scelgono quali bit modificare. Le righe seguenti impostano il bit 3 di mstatus, l'abilitazione globale degli interrupt, e lasciano il valore precedente in t1.

li t0, 8
csrrs t1, mstatus, t0

L'8 è 1000 in binario, quindi cambia solo il bit 3. Quando rs1 è zero, il CSR viene letto e mai scritto, che è la forma abbreviata csrr. Quando rd è zero, il vecchio valore viene scartato, che è la forma abbreviata csrs. Vedi csrrw per l'elenco dei CSR in questo simulatore e csrrc per azzerare i bit.

Il manuale RISC-V afferma che csrrs con rs1=x0 non scrive affatto il CSR.

Esempio

li t0, 8
csrrs t1, mstatus, t0   # sets bit 3 of mstatus, t1 = old mstatus