csrs
псевдоlyszt.net охватывает csrs и другие инструкции RISC-V более подробно.
Описание
csrs устанавливает биты в регистре управления. Регистр управления и состояния, или CSR, хранит состояние процессора, такое как адрес обработчика ловушек и переключатели прерываний (см. csrrw). Приведённая ниже форма устанавливает все биты CSR, которые равны 1 в rs, и оставляет остальные биты без изменений.
csrs csr, rs
Это псевдоинструкция — читаемое имя, которое ассемблер переписывает в реальную инструкцию. Она превращается в приведённую ниже инструкцию, где rd — это zero, поэтому старое значение отбрасывается.
csrrs zero, csr, rs
Прерывания включаются двумя вызовами csrs. Первый устанавливает бит 11 в mie — разрешение внешних прерываний. Второй устанавливает бит 3 в mstatus — глобальное разрешение прерываний.
li t0, 0x800 csrs mie, t0 li t0, 8 csrs mstatus, t0
Оба переключателя должны быть включены, прежде чем процессор примет прерывание. У кнопки также есть собственный регистр разрешения, описанный на странице GPIO. См. csrc для сброса битов.
Руководство RISC-V перечисляет csrs и csrc как сокращения для установки и сброса битов CSR, когда старое значение не нужно.
Разворачивается в
csrrs zero, csr, rs
Ассемблер заменяет эту псевдоинструкцию реальной инструкцией или инструкциями, перечисленными выше.
Пример
li t0, 8 csrs mstatus, t0 # sets bit 3 of mstatus
