csrrc

csrrc

RISC-V 汇编 参考

lyszt.net 更详细地介绍了 csrrc 和其他 RISC-V 指令。

描述

csrrc 读取控制寄存器并清除其中的位。控制和状态寄存器(CSR)保存处理器状态,例如陷阱处理程序地址和中断开关(参见 csrrw)。该名称是 atomic read and clear bits in CSR 的缩写。CSR 的旧值会写入 rd,然后 rs1 中为 1 的每一位都会在 CSR 中被清除为 0。rs1 中为 0 的位保持其值。

csrrc rd, csr, rs1

寄存器 rs1 用作掩码,即一种模式,其 1 位选择要更改哪些位。下面的行清除 mstatus 的第 3 位,这会关闭全局中断使能,并将先前的值留在 t1 中。

li t0, 8
csrrc t1, mstatus, t0

当 rs1 为 zero 时,CSR 被读取且从不写入。当 rd 为 zero 时,旧值被丢弃,这就是 csrc 简写。设置位请参见 csrrs,本模拟器中 CSR 的列表请参见 csrrw。

RISC-V 手册指出,rs1=x0 的 csrrc 完全不写入 CSR。

示例

li t0, 8
csrrc t1, mstatus, t0   # clears bit 3 of mstatus, t1 = old mstatus