From 6fe0b6e444164c4d673e3e2dd1b1c15a74063f23 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Fri, 19 Sep 2025 11:16:33 +1000 Subject: [PATCH] execute1: Fix no-op behaviour of reading undefined SPRs In privileged mode, mfspr from an undefined or unimplemented SPR number should be a no-op, which is implemented here by writing back the same value that the destination register previously had. However, we ended up writing back 0 because ex1.res2_sel was not set correctly. To fix this, set res2_sel to 10 in the undefined SPR case. Signed-off-by: Paul Mackerras --- execute1.vhdl | 1 + 1 file changed, 1 insertion(+) diff --git a/execute1.vhdl b/execute1.vhdl index 34fd03a..85b4a7a 100644 --- a/execute1.vhdl +++ b/execute1.vhdl @@ -1456,6 +1456,7 @@ begin end if; slow_op := '1'; v.se.noop_spr_read := '1'; + v.res2_sel := "10"; if ex1.msr(MSR_PR) = '1' then illegal := '1'; end if;