diff --git a/rocket/src/main/scala/ctrl.scala b/rocket/src/main/scala/ctrl.scala index 22ed8502..45fe7acf 100644 --- a/rocket/src/main/scala/ctrl.scala +++ b/rocket/src/main/scala/ctrl.scala @@ -745,4 +745,5 @@ class Control(implicit conf: RocketConfiguration) extends Module io.rocc.cmd.valid := wb_rocc_val io.rocc.exception := wb_reg_xcpt && sr.er + io.rocc.s := sr.s } diff --git a/rocket/src/main/scala/dpath.scala b/rocket/src/main/scala/dpath.scala index 8ae151e7..a987b720 100644 --- a/rocket/src/main/scala/dpath.scala +++ b/rocket/src/main/scala/dpath.scala @@ -190,6 +190,7 @@ class Datapath(implicit conf: RocketConfiguration) extends Module pcr.io.host <> io.host pcr.io <> io.ctrl pcr.io <> io.fpu + pcr.io.rocc <> io.rocc pcr.io.pc := wb_reg_pc io.ctrl.csr_replay := pcr.io.replay diff --git a/rocket/src/main/scala/dpath_util.scala b/rocket/src/main/scala/dpath_util.scala index 08b463b3..49da47fe 100644 --- a/rocket/src/main/scala/dpath_util.scala +++ b/rocket/src/main/scala/dpath_util.scala @@ -108,6 +108,7 @@ class CSRFile(implicit conf: RocketConfiguration) extends Module val time = UInt(OUTPUT, conf.xprlen) val fcsr_rm = Bits(OUTPUT, FPConstants.RM_SZ) val fcsr_flags = Valid(Bits(width = FPConstants.FLAGS_SZ)).flip + val rocc = new RoCCInterface().flip } val reg_epc = Reg(Bits(width = VADDR_BITS+1)) @@ -168,8 +169,8 @@ class CSRFile(implicit conf: RocketConfiguration) extends Module val wdata = Mux(cpu_req_valid, io.rw.wdata, host_pcr_bits.data) io.status := reg_status - io.status.ip := Cat(r_irq_timer, reg_fromhost.orR, r_irq_ipi, Bool(false), - Bool(false), Bool(false), Bool(false), Bool(false)) + io.status.ip := Cat(r_irq_timer, reg_fromhost.orR, r_irq_ipi, Bool(false), + Bool(false), io.rocc.interrupt, Bool(false), Bool(false)) io.fatc := wen && decoded_addr(CSRs.fatc) io.evec := Mux(io.exception, reg_evec.toSInt, reg_epc).toUInt io.ptbr := reg_ptbr diff --git a/rocket/src/main/scala/rocc.scala b/rocket/src/main/scala/rocc.scala index a6430e54..745568ad 100644 --- a/rocket/src/main/scala/rocc.scala +++ b/rocket/src/main/scala/rocc.scala @@ -39,6 +39,7 @@ class RoCCInterface(implicit conf: RocketConfiguration) extends Bundle val resp = Decoupled(new RoCCResponse) val mem = new HellaCacheIO()(conf.dcache) val busy = Bool(OUTPUT) + val s = Bool(INPUT) val interrupt = Bool(OUTPUT) // These should be handled differently, eventually