csrrc
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
