csrrw

csrrw

Asembler RISC-V Referencja

lyszt.net obejmuje csrrw i inne instrukcje RISC-V w większych szczegółach.

Opis

csrrw wymienia rejestr kontrolny z rejestrem ogólnym. Rejestr kontroli i stanu (CSR) to specjalny rejestr przechowujący stan procesora, w tym adres procedury obsługi pułapek i informację, czy przerwania są włączone. CSR ma 12-bitowy numer i zazwyczaj nazwę taką jak mtvec. Tylko instrukcje CSR mogą uzyskiwać dostęp do CSR-ów, a lw lub sw nie mogą. Nazwa oznacza atomowy odczyt i zapis CSR. Atomowy oznacza, że odczyt i zapis następują jako pojedynczy, niepodzielny krok.

csrrw rd, csr, rs1

Stara wartość CSR jest zapisywana do rd, a wartość rs1 jest zapisywana do CSR. Poniższa linia zapisuje adres w t0 do mtvec i pozostawia poprzednią wartość mtvec w t1.

csrrw t1, mtvec, t0

Jeśli rd to zero, stara wartość jest odrzucana, a CSR nie jest odczytywany. Ta forma to skrót csrw. Jeśli rs1 to zero, CSR jest nadpisywany zerem.

Ten symulator udostępnia sześć CSR-ów: mstatus, mie, mtvec, mepc, mcause i mip. Zapisy do mip są ignorowane, ponieważ ustawia go sprzęt. Każdy inny numer CSR jest odczytywany jako 0 i ignoruje zapisy. Zobacz csrr w celu odczytu oraz csrs i csrc w celu zmiany pojedynczych bitów.

Podręcznik RISC-V stwierdza, że przy rd=x0 csrrw nie odczytuje CSR-u, a csrrw z rs1=x0 próbuje zapisać do niego zero.

Przykład

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