csrcpseudo

csrc

pseudo
Assembly RISC-V Referência

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

Descrição

csrc limpa bits em um registrador de controle. Um registrador de controle e status, ou CSR, mantém o estado do processador, como o endereço do tratador de trap e os interruptores de interrupção (veja csrrw). A forma abaixo limpa cada bit do CSR que é 1 em rs e deixa os outros bits inalterados.

csrc csr, rs

É uma pseudoinstrução, um nome legível que o montador reescreve como uma instrução real. Ela se torna a instrução abaixo, onde rd é zero para que o valor antigo seja descartado.

csrrc zero, csr, rs

As linhas abaixo limpam o bit 3 de mstatus, o que desliga a habilitação global de interrupções.

li t0, 8
csrc mstatus, t0

O processador limpa esse bit por conta própria quando um trap começa, e mret o restaura, então um tratador raramente precisa fazer isso. Um programa usa csrc para proteger um curto trecho de código contra interrupções e depois define o bit novamente com csrs.

Expande para

csrrc zero, csr, rs

O montador substitui esta pseudoinstrução pela instrução ou instruções reais listadas acima.

Exemplo

li t0, 8
csrc mstatus, t0   # clears bit 3 of mstatus