csrrsi
lyszt.net охоплює csrrsi та інші інструкції RISC-V більш детально.
Опис
csrrsi — це csrrs з константною маскою замість регістра. Літера i означає immediate (безпосередній), константу, записану в інструкцію. Константа uimm — це число від 0 до 31, оскільки вона зберігається в 5 бітах. Старе значення CSR потрапляє в rd, потім кожен біт, який дорівнює 1 в uimm, встановлюється в 1 в CSR.
csrrsi rd, csr, uimm
Наступний рядок встановлює біт 3 mstatus і залишає попереднє значення в t1. 8 — це двійкове 1000.
csrrsi t1, mstatus, 8
У такий спосіб можна встановити лише біти від 0 до 4. Біт 3 mstatus, глобальний дозвіл переривань, підходить. Біт 11 mie, дозвіл зовнішніх переривань, не підходить, тому для нього потрібен csrrs з регістром, що містить 0x800. Коли uimm дорівнює 0, CSR читається, а не записується. Коли rd — це zero, старе значення відкидається, що є скороченням csrsi. Див. csrrs для регістрової форми.
Приклад
csrrsi t1, mstatus, 8 # sets bit 3 of mstatus, t1 = old mstatus
