From: Paul Mackerras Date: Fri, 10 Jul 2020 09:07:47 +0000 (+1000) Subject: execute1: Ease timing on redirect_nia X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9160e29c56b3ae4da4b4b8e6abef04c95dd75f20;p=microwatt.git execute1: Ease timing on redirect_nia This eliminates a dependency of r.f.redirect_nia on the carry out from the main adder in the case of a conditional trap instruction. We can set r.f.redirect_nia unconditionally, even if no interrupt is generated. Signed-off-by: Paul Mackerras --- diff --git a/execute1.vhdl b/execute1.vhdl index 3b2007a..fb760d1 100644 --- a/execute1.vhdl +++ b/execute1.vhdl @@ -619,12 +619,12 @@ begin end loop; else -- trap instructions (tw, twi, td, tdi) + v.f.redirect_nia := std_logic_vector(to_unsigned(16#700#, 64)); + -- set bit 46 to say trap occurred + ctrl_tmp.srr1(63 - 46) <= '1'; if or (trapval and insn_to(e_in.insn)) = '1' then -- generate trap-type program interrupt exception := '1'; - v.f.redirect_nia := std_logic_vector(to_unsigned(16#700#, 64)); - -- set bit 46 to say trap occurred - ctrl_tmp.srr1(63 - 46) <= '1'; report "trap"; end if; end if;