Skip to content

Commit ec6d0fb

Browse files
committed
on writing MTVEC, mask mode bits so that software can detect unsupported vectored mode
1 parent 168c412 commit ec6d0fb

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

cpu.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,9 @@ def exec_SYSTEM(cpu, ram, inst, rd, funct3, rs1, rs2, funct7):
253253
cpu.trap(cause=2, mtval=inst) # 2 = illegal instruction
254254

255255
if funct3 in (0b001, 0b101): # CSRRW / CSRRWI
256-
if not (csr in cpu.CSR_NOWRITE):
256+
if csr == 0x305: # we don't support vectored interrupts, so mask away lower 2 bits of mtvect
257+
cpu.csrs[csr] = rs1_val & ~0x3
258+
elif not (csr in cpu.CSR_NOWRITE):
257259
cpu.csrs[csr] = rs1_val
258260

259261
# Atomic update of mtime

0 commit comments

Comments
 (0)