csrrc

csrrc

Ensamblador RISC-V Referencia

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