Generate local interrupt #128 on bus errors
It doesn't have a correpsonding bit in mip/mie, so it isn't individually maskable, nor is it delegable.
This commit is contained in:
@ -81,10 +81,14 @@ abstract class CoreModule(implicit val p: Parameters) extends Module
|
||||
abstract class CoreBundle(implicit val p: Parameters) extends ParameterizedBundle()(p)
|
||||
with HasCoreParameters
|
||||
|
||||
class CoreInterrupts(implicit p: Parameters) extends TileInterrupts()(p) {
|
||||
val buserror = coreParams.tileControlAddr.map(a => Bool())
|
||||
}
|
||||
|
||||
trait HasCoreIO extends HasTileParameters {
|
||||
implicit val p: Parameters
|
||||
val io = new CoreBundle()(p) with HasExternallyDrivenTileConstants {
|
||||
val interrupts = new TileInterrupts().asInput
|
||||
val interrupts = new CoreInterrupts().asInput
|
||||
val imem = new FrontendIO
|
||||
val dmem = new HellaCacheIO
|
||||
val ptw = new DatapathPTWIO().flip
|
||||
|
@ -150,6 +150,7 @@ class RocketTileModule(outer: RocketTile) extends BaseTileModule(outer, () => ne
|
||||
val uncorrectable = RegInit(Bool(false))
|
||||
|
||||
decodeCoreInterrupts(core.io.interrupts) // Decode the interrupt vector
|
||||
outer.busErrorUnit.foreach { beu => core.io.interrupts.buserror.get := beu.module.io.interrupt }
|
||||
core.io.hartid := io.hartid // Pass through the hartid
|
||||
io.trace.foreach { _ := core.io.trace }
|
||||
io.halt_and_catch_fire.foreach { _ := uncorrectable }
|
||||
|
Reference in New Issue
Block a user