From 9160e29c56b3ae4da4b4b8e6abef04c95dd75f20 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Fri, 10 Jul 2020 19:07:47 +1000 Subject: [PATCH] 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 --- execute1.vhdl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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;