Andrew, thanks for that information. I have a related question about non-instruction-fetch reads from the SPI Flash.
Does a data load instruction from the memory-mapped region of the SPI Flash stall the load unit and the CPU execution pipeline until the SPI Flash read is completed? Again, my interest is whether an interrupt could be recognized and ISR code could begin execution while a previously initiated read from SPI Flash is pending. Ideally the long-latency read would be quashed by the interrupt, to be retried after the ISR return, and the interrupt service routine would be able to start execution as soon as the ISR code could be fetched. What does the HiFive implementation actually do?
An alternative to using the memory-mapped SPI Flash for data loads is available by switching the interface mode to a control-register based mode for programmed reads of the SPI Flash contents. This programmed-read mechanism for reading the SPI Flash would presumably would avoid any long-latency read access interruptibility stall issues, but the mode turns off the memory-mapped instruction fetching from the SPI Flash. Is my understanding of this correct?