execute1: Fix setting HEIR and FSCR[IC] on interrupts

Code in the execute1_actions process that handles illegal and facility
unavailable interrupts was setting actions.se.set_heir or
actions.se.set_ic, but then because actions.exception was also set,
the contents of actions.se were ignored, meaning that HEIR or FSCR[IC]
were not getting updated.  To fix this, execute1_1 now conditions use
of those fields on valid_in rather than go.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
pull/452/head
Paul Mackerras 2 weeks ago
parent 6fe0b6e444
commit 4073aa5ffd

@ -1747,6 +1747,8 @@ begin
if valid_in = '1' then if valid_in = '1' then
v.prev_op := e_in.insn_type; v.prev_op := e_in.insn_type;
v.prev_prefixed := e_in.prefixed; v.prev_prefixed := e_in.prefixed;
v.se.set_heir := actions.se.set_heir;
v.se.write_ic := actions.se.write_ic;
end if; end if;


-- Determine if there is any interrupt to be taken -- Determine if there is any interrupt to be taken

Loading…
Cancel
Save