csrrc
lyszt.net cubre csrrc y otras instrucciones RISC-V con más detalle.
Descripción
csrrc lee un registro de control y borra bits en él. Un registro de control y estado, o CSR, contiene el estado del procesador, como la dirección del manejador de traps y los interruptores de interrupciones (véase csrrw). El nombre es la abreviatura de lectura atómica y borrado de bits en CSR. El valor antiguo del CSR se coloca en rd, luego cada bit que es 1 en rs1 se pone a 0 en el CSR. Los bits que son 0 en rs1 conservan su valor.
csrrc rd, csr, rs1
El registro rs1 funciona como una máscara, un patrón cuyos bits a 1 eligen qué bits cambiar. Las líneas siguientes borran el bit 3 de mstatus, lo que desactiva la habilitación global de interrupciones, y dejan el valor anterior en t1.
li t0, 8 csrrc t1, mstatus, t0
Cuando rs1 es zero, el CSR se lee y nunca se escribe. Cuando rd es zero, el valor antiguo se descarta, que es la forma abreviada csrc. Véase csrrs para establecer bits y csrrw para la lista de CSR en este simulador.
El manual de RISC-V dice que csrrc con rs1=x0 no escribe el CSR en absoluto.
Ejemplo
li t0, 8 csrrc t1, mstatus, t0 # clears bit 3 of mstatus, t1 = old mstatus
