Implement data storage interrupts
authorPaul Mackerras <paulus@ozlabs.org>
Tue, 7 Apr 2020 06:17:37 +0000 (16:17 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Fri, 8 May 2020 02:12:01 +0000 (12:12 +1000)
commit42d0fcc5119e28c2e8807076f25b19e9b04dea83
tree8b12cfe3bdd282d68dc957e47b951259e54bb682
parent750b3a8e284ef721c101bbf82f88743ae2428459
Implement data storage interrupts

This adds a path from loadstore1 back to execute1 for reporting
errors, and machinery in execute1 for generating data storage
interrupts at vector 0x300.

If dcache is given two requests in successive cycles and the
first encounters an error (e.g. a TLB miss), it will now cancel
the second request.

Loadstore1 now responds to errors reported by dcache by sending
an exception signal to execute1 and returning to the idle state.
Execute1 then writes SRR0 and SRR1 and jumps to the 0x300 Data
Storage Interrupt vector.  DAR and DSISR are held in loadstore1.

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