hookup rocc interrupt and s bit
This commit is contained in:
		| @@ -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 | ||||
| } | ||||
|   | ||||
| @@ -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 | ||||
|  | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user