core: Reorganize execute1
authorPaul Mackerras <paulus@ozlabs.org>
Sat, 26 Sep 2020 09:58:46 +0000 (19:58 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Fri, 15 Jan 2021 01:40:50 +0000 (12:40 +1100)
commitb0510fd1bbfe50ab7f61e6be4a4643c9d5dd87b1
tree54f6597479c791ad7a5147c01970baeb36721bcb
parent658feabfd40fa4d4e3048334d11036fc1c1c959b
core: Reorganize execute1

This breaks up the enormous if .. elsif .. case .. elsif statement in
execute1 in order to try to make it simpler and more understandable.
We now have decode2 deciding whether the instruction has a value to be
written back to a register (GPR, GSPR, FPR, etc.) rather than
individual cases in execute1 setting result_en.  The computation of
the data to be written back is now independent of detection of various
exception conditions.  We now have an if block determining if any
exception condition exists which prevents the next instruction from
being executed, then the case statement which performs actions such as
setting carry/overflow bits, determining if a trap exception exists,
doing branches, etc., then an if statement for all the r.busy = 1
cases (continuing execution of an instruction which was started in a
previous cycle, or writing SRR1 for an interrupt).

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