csrrc
lyszt.net охватывает csrrc и другие инструкции RISC-V более подробно.
Описание
csrrc читает регистр управления и сбрасывает в нём биты. Регистр управления и состояния, или CSR, хранит состояние процессора, такое как адрес обработчика ловушек и переключатели прерываний (см. csrrw). Название — сокращение от атомарного чтения и сброса битов в CSR. Старое значение CSR помещается в rd, затем каждый бит, равный 1 в rs1, сбрасывается в 0 в CSR. Биты, равные 0 в rs1, сохраняют своё значение.
csrrc rd, csr, rs1
Регистр rs1 работает как маска — шаблон, единичные биты которого выбирают, какие биты изменять. Приведённые ниже строки сбрасывают бит 3 в mstatus, что отключает глобальное разрешение прерываний, и оставляют предыдущее значение в t1.
li t0, 8 csrrc t1, mstatus, t0
Когда rs1 равен zero, CSR читается и никогда не записывается. Когда rd равен zero, старое значение отбрасывается, что является сокращением csrc. См. csrrs для установки битов и csrrw для списка CSR в этом симуляторе.
Руководство RISC-V говорит, что csrrc с rs1=x0 вообще не записывает CSR.
Пример
li t0, 8 csrrc t1, mstatus, t0 # clears bit 3 of mstatus, t1 = old mstatus
