|
This change correctly models (hopefully) the behaviour of platform
external interrupts, and adds an ad-hoc "Simple Interrupt Generator"
MMIO device to set them. Currently it is only used to set MEIP, SEIP,
SSIP and MSIP. The reason for supporting this set of interrupt is as
follows:
* MEIP - cannot be triggered via any other means.
* SEIP - can be triggered by writing to mip[SEI] but there is additional
weird behaviour that means you also need to be able to control the
platform SEI input to full test it.
* MTI, STI - can already be triggered via CLINT. Also these are set
continuously via CLINT so having two devices set them would be awkward.
* MSI - can be triggered via CLINT but for symmetry with SSI this is
also supported.
* SSI - can be triggered via software but the ISA manual also mentions
it can be set via the external platform so we want to be able to test
this.
|