csrsпсевдо

csrs

псевдо
RISC-V Ассемблер Ссылка

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