execute1: Implement trace interrupts
authorPaul Mackerras <paulus@ozlabs.org>
Fri, 28 Aug 2020 10:34:09 +0000 (20:34 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Sat, 29 Aug 2020 07:18:42 +0000 (17:18 +1000)
commitb589d2d472be58d81e01aad6de467119ee15e1a4
treec33a3d5833c2f997c127ec8b0104ec90acaf2425
parent6a80825e705af736e689cb2421b64453838d189e
execute1: Implement trace interrupts

Trace interrupts occur when the MSR[TE] field is non-zero and an
instruction other than rfid has been successfully completed.  A trace
interrupt occurs before the next instruction is executed or any
asynchronous interrupt is taken.

Since the trace interrupt is defined to set SRR1 bits depending on
whether the traced instruction is a load or an instruction treated as
a load, or a store or an instruction treated as a store, we need to
make sure the treated-as-a-load instructions (icbi, icbt, dcbt, dcbst,
dcbf) and the treated-as-a-store instructions (dcbtst, dcbz) have the
correct opcodes in decode1.  Several of them were previously marked as
OP_NOP.

We don't yet implement the SIAR or SDAR registers, which should be set
by trace interrupts.

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