From c83f8dcd23f42187bd72716c92e8c4ffdb752d5e Mon Sep 17 00:00:00 2001 From: cheapie Date: Fri, 29 May 2026 20:14:41 -0500 Subject: Fix CSR write protection --- rvcontroller.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rvcontroller.lua b/rvcontroller.lua index 64be2ab..875c324 100644 --- a/rvcontroller.lua +++ b/rvcontroller.lua @@ -371,6 +371,7 @@ local function writecsr(address,data) return elseif address == 0xf11 or address == 0xf12 or address == 0xf13 or address == 0xf14 or address == 0xf15 or address == 0x300 then --Read-only machine information register, ignore write + return elseif address == 0x310 then --mstatush local bits = explodebits(data,32) @@ -388,7 +389,7 @@ local function writecsr(address,data) mem.isa.c = bits[2] mem.isa.i = bits[8] mem.isa.m = bits[12] - local newbits = {[0] = mem.isa.a,mem.isa.b,mem.isa.c,[4] = not mem.isa.i,[8] = mem.isa.i,[12] = mem.isa.m} + local newbits = {[0] = mem.isa.a,mem.isa.b,mem.isa.c,[4] = not mem.isa.i,[8] = mem.isa.i,[12] = mem.isa.m,[30] = true} mem.csr[0x301] = implodebits(newbits,32) return end -- cgit v1.2.3