csrrsi
lyszt.net cubre csrrsi y otras instrucciones RISC-V con más detalle.
Descripción
csrrsi es csrrs con una máscara constante en lugar de un registro. La i significa immediate (inmediato), una constante escrita en la instrucción. La constante uimm es un número de 0 a 31 porque se almacena en 5 bits. El valor antiguo del CSR va a rd, luego cada bit que es 1 en uimm se pone a 1 en el CSR.
csrrsi rd, csr, uimm
La línea siguiente establece el bit 3 de mstatus y deja el valor anterior en t1. El 8 es binario 1000.
csrrsi t1, mstatus, 8
Solo se pueden establecer los bits 0 a 4 de esta forma. El bit 3 de mstatus, la habilitación global de interrupciones, encaja. El bit 11 de mie, la habilitación de interrupciones externas, no encaja, así que ese necesita csrrs con un registro que contenga 0x800. Cuando uimm es 0, el CSR se lee y no se escribe. Cuando rd es zero, el valor antiguo se descarta, que es la forma abreviada csrsi. Consulta csrrs para la forma con registro.
Ejemplo
csrrsi t1, mstatus, 8 # sets bit 3 of mstatus, t1 = old mstatus
