diff --git a/execute1.vhdl b/execute1.vhdl index 436b782..cec431f 100644 --- a/execute1.vhdl +++ b/execute1.vhdl @@ -70,7 +70,6 @@ begin ctrl_tmp.tb <= std_ulogic_vector(unsigned(ctrl.tb) + 1); terminate_out <= '0'; - flush_out <= '0'; f_out <= Execute1ToFetch1TypeInit; if e_in.valid = '1' then @@ -100,7 +99,6 @@ begin result := ppc_andc(e_in.read_data1, e_in.read_data2); result_en := 1; when OP_B => - flush_out <= '1'; f_out.redirect <= '1'; f_out.redirect_nia <= std_ulogic_vector(signed(e_in.nia) + signed(e_in.read_data2)); when OP_BC => @@ -108,7 +106,6 @@ begin ctrl_tmp.ctr <= std_ulogic_vector(unsigned(ctrl.ctr) - 1); end if; if ppc_bc_taken(e_in.const1(4 downto 0), e_in.const2(4 downto 0), e_in.cr, ctrl.ctr) = 1 then - flush_out <= '1'; f_out.redirect <= '1'; f_out.redirect_nia <= std_ulogic_vector(signed(e_in.nia) + signed(e_in.read_data2)); end if; @@ -117,13 +114,11 @@ begin ctrl_tmp.ctr <= std_ulogic_vector(unsigned(ctrl.ctr) - 1); end if; if ppc_bc_taken(e_in.const1(4 downto 0), e_in.const2(4 downto 0), e_in.cr, ctrl.ctr) = 1 then - flush_out <= '1'; f_out.redirect <= '1'; f_out.redirect_nia <= ctrl.lr(63 downto 2) & "00"; end if; when OP_BCCTR => if ppc_bcctr_taken(e_in.const1(4 downto 0), e_in.const2(4 downto 0), e_in.cr) = 1 then - flush_out <= '1'; f_out.redirect <= '1'; f_out.redirect_nia <= ctrl.ctr(63 downto 2) & "00"; end if; @@ -354,5 +349,6 @@ begin -- update outputs --f_out <= r.f; e_out <= r.e; + flush_out <= f_out.redirect; end process; end architecture behaviour;