csrrs

csrrs

RISC-V Ассемблер Ссылка

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