diff --git a/lib/CPUs/MIPS/src/core/mips_instr.vhd b/lib/CPUs/MIPS/src/core/mips_instr.vhd index cbfc588..3db27b9 100644 --- a/lib/CPUs/MIPS/src/core/mips_instr.vhd +++ b/lib/CPUs/MIPS/src/core/mips_instr.vhd @@ -157,7 +157,7 @@ package body mips_instr is rt := to_integer(extract_rt(instr)); rs := to_integer(extract_rs(instr)); - result := op_sll; + result := reserved; case opc is @@ -485,6 +485,7 @@ package body mips_instr is variable result : ctrl_lines_t; begin result.cop_instr_en := '0'; + result.cop_read := '0'; result.jump := '0'; result.jump_long := '0'; result.branch := '0'; @@ -794,6 +795,18 @@ package body mips_instr is -- when COPz => when 16 | 17 | 18 | 19 => result.cop_instr_en := '1'; + case rs is + when 0 => -- MFCz + result.cop_read := '1'; + result.reg_write := '1'; + when 2 => -- CFCz + result.cop_read := '1'; + result.reg_write := '1'; + + when others => null; -- undef + + end case; + -- when op_addi => when 8 =>