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