csrs疑似

csrs

疑似
RISC-V アセンブリ 参考

lyszt.netはcsrsおよびその他のRISC-V命令をより詳しく扱っています。

説明

csrs は制御レジスタのビットをセットします。制御・ステータスレジスタ(CSR)は、トラップハンドラのアドレスや割り込みスイッチなど、プロセッサの状態を保持します(csrrw を参照)。以下の形式は、rs で 1 になっている CSR のすべてのビットをセットし、他のビットは変更しません。

csrs csr, rs

これは疑似命令であり、アセンブラが実際の命令に書き換える読みやすい名前です。以下の命令になり、rd は zero なので古い値は破棄されます。

csrrs zero, csr, rs

割り込みは csrs を 2 回呼び出すことで有効になります。1 回目は mie のビット 11(外部割り込みイネーブル)をセットします。2 回目は mstatus のビット 3(グローバル割り込みイネーブル)をセットします。

li t0, 0x800
csrs mie, t0
li t0, 8
csrs mstatus, t0

プロセッサが割り込みを受け付けるには、両方のスイッチがオンになっている必要があります。ボタンにも独自のイネーブルレジスタがあり、GPIO ページで説明されています。ビットのクリアについては csrc を参照してください。

RISC-V マニュアルでは、古い値が不要な場合に CSR ビットをセットおよびクリアするための省略形として csrs と csrc を挙げています。

展開先

csrrs zero, csr, rs

アセンブラはこの疑似命令を、上記に示された実際の命令または複数の命令に置き換えます。

例

li t0, 8
csrs mstatus, t0   # sets bit 3 of mstatus