Metavalue cleanup for execute1.vhdl
authorMichael Neuling <mikey@neuling.org>
Thu, 14 Jul 2022 00:31:20 +0000 (10:31 +1000)
committerMichael Neuling <mikey@neuling.org>
Thu, 28 Jul 2022 00:14:51 +0000 (10:14 +1000)
Signed-off-by: Michael Neuling <mikey@neuling.org>
execute1.vhdl

index 43e79b47c33ca3332bd221fc2ed86e1eed02c91b..d77b16f889a26c28c5681608cb1c0ebe8f441446 100644 (file)
@@ -1170,12 +1170,12 @@ begin
            when OP_MFMSR =>
            when OP_MFSPR =>
                if e_in.spr_is_ram = '1' then
-                    if e_in.valid = '1' then
+                    if e_in.valid = '1' and not is_X(e_in.insn) then
                         report "MFSPR to SPR " & integer'image(decode_spr_num(e_in.insn)) &
                             "=" & to_hstring(alu_result);
                     end if;
                elsif e_in.spr_select.valid = '1' then
-                    if e_in.valid = '1' then
+                    if e_in.valid = '1' and not is_X(e_in.insn) then
                         report "MFSPR to slow SPR " & integer'image(decode_spr_num(e_in.insn));
                     end if;
                     slow_op := '1';
@@ -1192,7 +1192,7 @@ begin
                 else
                     -- mfspr from unimplemented SPRs should be a nop in
                     -- supervisor mode and a program interrupt for user mode
-                    if e_in.valid = '1' then
+                    if e_in.valid = '1' and not is_X(e_in.insn) then
                         report "MFSPR to SPR " & integer'image(decode_spr_num(e_in.insn)) &
                             " invalid";
                     end if;
@@ -1229,7 +1229,7 @@ begin
                     end if;
                 end if;
            when OP_MTSPR =>
-                if e_in.valid = '1' then
+                if e_in.valid = '1' and not is_X(e_in.insn) then
                     report "MTSPR to SPR " & integer'image(decode_spr_num(e_in.insn)) &
                         "=" & to_hstring(c_in);
                 end if;