csrrsi

csrrsi

Assembly RISC-V Referência

lyszt.net aborda csrrsi e outras instruções RISC-V com mais detalhes.

Descrição

csrrsi é csrrs com uma máscara constante no lugar de um registrador. O i significa immediate (imediato), uma constante escrita na instrução. A constante uimm é um número de 0 a 31 porque é armazenada em 5 bits. O valor antigo do CSR vai para rd, então cada bit que é 1 em uimm é definido como 1 no CSR.

csrrsi rd, csr, uimm

A linha abaixo define o bit 3 de mstatus e deixa o valor anterior em t1. O 8 é 1000 em binário.

csrrsi t1, mstatus, 8

Apenas os bits 0 a 4 podem ser definidos dessa forma. O bit 3 de mstatus, a habilitação global de interrupções, se encaixa. O bit 11 de mie, a habilitação de interrupções externas, não se encaixa, então esse precisa de csrrs com um registrador contendo 0x800. Quando uimm é 0, o CSR é lido e não escrito. Quando rd é zero, o valor antigo é descartado, o que é a forma abreviada csrsi. Veja csrrs para a forma com registrador.

Exemplo

csrrsi t1, mstatus, 8   # sets bit 3 of mstatus, t1 = old mstatus