Start removing SPRs from register file
authorPaul Mackerras <paulus@ozlabs.org>
Mon, 11 Jul 2022 22:52:05 +0000 (08:52 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Fri, 22 Jul 2022 12:20:32 +0000 (22:20 +1000)
commitbc4d02cb0dcc5b502a45651953ac7bd34521f0b9
treeebd7867a10b2ac4bba55cded3287d94a017c74e5
parent73cc5167ec1ea591d9da43f2e392b5202f045f32
Start removing SPRs from register file

This starts the process of removing SPRs from the register file by
moving SRR0/1, SPRG0-3, HSRR0/1 and HSPRG0/1 out of the register file
and putting them into execute1.  They are stored in a pair of small
RAM arrays, referred to as "even" and "odd".  The reason for having
two arrays is so that two values can be read and written in each
cycle.  For example, SRR0 and SRR1 can be written in parallel by an
interrupt and read in parallel by the rfid instruction.

The addresses in the RAM which will be accessed are determined in the
decode2 stage.  We have one write address for both sides, but two read
addresses, since in future we will want to be able to read CTR at the
same time as either LR or TAR.

We now have a connection from writeback to execute1 which carries the
partial SRR1 value for an interrupt.  SRR0 comes from the execute
pipeline; we no longer need to carry instruction addresses along the
LSU and FPU pipelines.  Since SRR0 and SRR1 can be written in the same
cycle now, we don't need the little state machine in writeback any
more.

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