csrrw

csrrw

Асемблер RISC-V Посилання

lyszt.net охоплює csrrw та інші інструкції RISC-V більш детально.

Опис

csrrw обмінює керуючий регістр із регістром загального призначення. Регістр керування та стану (CSR) — це спеціальний регістр, який зберігає стан процесора, зокрема адресу обробника пасток і те, чи ввімкнено переривання. CSR має 12-бітний номер і зазвичай назву, як-от mtvec. Лише інструкції CSR можуть отримувати доступ до CSR, а lw або sw не можуть. Назва означає атомарне читання й запис CSR. Атомарне означає, що читання й запис відбуваються як один неподільний крок.

csrrw rd, csr, rs1

Старе значення CSR записується в rd, а значення rs1 записується в CSR. Наведений нижче рядок зберігає адресу з t0 у mtvec і залишає попереднє значення mtvec у t1.

csrrw t1, mtvec, t0

Якщо rd — це zero, старе значення відкидається, і CSR не читається. Ця форма — скорочення csrw. Якщо rs1 — це zero, CSR перезаписується нулем.

Цей симулятор надає шість CSR: mstatus, mie, mtvec, mepc, mcause і mip. Записи в mip ігноруються, оскільки його встановлює апаратне забезпечення. Будь-який інший номер CSR читається як 0 і ігнорує записи. Див. csrr для читання та csrs і csrc для зміни окремих бітів.

Посібник RISC-V зазначає, що з rd=x0 csrrw не читає CSR, а csrrw з rs1=x0 намагається записати в нього нуль.

Приклад

li t0, 0x100
csrrw t1, mtvec, t0   # mtvec = 0x100, t1 = old mtvec