Implement interrupts for prefixed instructions
authorPaul Mackerras <paulus@ozlabs.org>
Mon, 3 Jul 2023 08:19:38 +0000 (18:19 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Thu, 6 Jul 2023 09:41:51 +0000 (19:41 +1000)
commitc4492c843a6d4c61df7e0134c3b13342599b1102
treeb96a511d5cd67f7bfa6091806fbcbc9e028dd47e
parent39ca675ce399c494aad7c27a1caa8ceff62c23af
Implement interrupts for prefixed instructions

This arranges to generate an illegal instruction type program
interrupt for illegal prefixed instructions, that is, those where the
suffix is not a legal value given the prefix, or the prefix has a
reserved value in the subtype field.  This implementation doesn't
generate an interrupt for the invalid 8LS:D and MLS:D instruction
forms where R = 1 and RA != 0.  (In those cases it uses (RA) as the
addend, i.e. it ignores the R bit.)

This detects the case where the address of an instruction prefix is
equal mod 64 to 60, and generates an alignment interrupt in that case.

This also arranges to set bit 34 of SRR1 when an interrupt occurs due
to a prefixed instruction, for those interrupts where that is required
(i.e. trace, alignment, floating-point unavailable, data storage, data
segment, and most cases of program interrupt).

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
common.vhdl
decode1.vhdl
decode2.vhdl
execute1.vhdl
loadstore1.vhdl