|
|
|
|
@ -1442,8 +1442,8 @@ begin
|
|
|
|
|
if e_in.spr_select.ispmu = '0' then
|
|
|
|
|
case e_in.spr_select.sel is
|
|
|
|
|
when SPRSEL_LOGR =>
|
|
|
|
|
if e_in.insn(16) = '0' then
|
|
|
|
|
v.se.inc_loga := '1';
|
|
|
|
|
if e_in.insn(16) = '1' then
|
|
|
|
|
v.se.inc_loga := '1'; -- reading LOG_DATA
|
|
|
|
|
end if;
|
|
|
|
|
when others =>
|
|
|
|
|
end case;
|
|
|
|
|
@ -1525,6 +1525,7 @@ begin
|
|
|
|
|
when SPRSEL_DEC =>
|
|
|
|
|
v.se.write_dec := '1';
|
|
|
|
|
when SPRSEL_LOGR =>
|
|
|
|
|
-- must be writing LOG_ADDR; LOG_DATA is readonly
|
|
|
|
|
v.se.write_loga := '1';
|
|
|
|
|
when SPRSEL_CFAR =>
|
|
|
|
|
v.se.write_cfar := '1';
|
|
|
|
|
@ -1624,7 +1625,7 @@ begin
|
|
|
|
|
-- misaligned prefixed instructions, which has higher priority than
|
|
|
|
|
-- other facility unavailable interrupts.
|
|
|
|
|
v.exception := '1';
|
|
|
|
|
v.ic := x"b";
|
|
|
|
|
v.ic := std_ulogic_vector(to_unsigned(FSCR_PREFIX, 4));
|
|
|
|
|
v.e.intr_vec := 16#f60#;
|
|
|
|
|
v.se.write_ic := '1';
|
|
|
|
|
|
|
|
|
|
@ -1666,7 +1667,7 @@ begin
|
|
|
|
|
ctrl.fscr_scv = '0' then
|
|
|
|
|
-- Facility unavailable for scv instruction
|
|
|
|
|
v.exception := '1';
|
|
|
|
|
v.ic := x"c";
|
|
|
|
|
v.ic := std_ulogic_vector(to_unsigned(FSCR_SCV, 4));
|
|
|
|
|
v.e.intr_vec := 16#f60#;
|
|
|
|
|
v.se.write_ic := '1';
|
|
|
|
|
|
|
|
|
|
@ -1674,7 +1675,7 @@ begin
|
|
|
|
|
ctrl.fscr_tar = '0' then
|
|
|
|
|
-- Facility unavailable for TAR access
|
|
|
|
|
v.exception := '1';
|
|
|
|
|
v.ic := x"8";
|
|
|
|
|
v.ic := std_ulogic_vector(to_unsigned(FSCR_TAR, 4));
|
|
|
|
|
v.e.intr_vec := 16#f60#;
|
|
|
|
|
v.se.write_ic := '1';
|
|
|
|
|
|
|
|
|
|
@ -1682,7 +1683,7 @@ begin
|
|
|
|
|
ctrl.fscr_dscr = '0' then
|
|
|
|
|
-- Facility unavailable for DSCR access
|
|
|
|
|
v.exception := '1';
|
|
|
|
|
v.ic := x"2";
|
|
|
|
|
v.ic := std_ulogic_vector(to_unsigned(FSCR_DSCR, 4));
|
|
|
|
|
v.e.intr_vec := 16#f60#;
|
|
|
|
|
v.se.write_ic := '1';
|
|
|
|
|
|
|
|
|
|
@ -1733,6 +1734,7 @@ begin
|
|
|
|
|
v.prefixed := e_in.prefixed;
|
|
|
|
|
v.insn := e_in.insn;
|
|
|
|
|
v.prefix := e_in.prefix;
|
|
|
|
|
v.advance_nia := '0';
|
|
|
|
|
end if;
|
|
|
|
|
|
|
|
|
|
lv := Execute1ToLoadstore1Init;
|
|
|
|
|
|