csrrw
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
