1
0

Avoid need for FENCE.I in debug programs

This is a hack to work around caching the (uncacheable) debug RAM.  The
RAM is always entered with a JALR, so flush the I$ on any debug-mode JALR.
This commit is contained in:
Andrew Waterman 2016-06-22 13:49:33 -07:00
parent 7f88a00a38
commit 5644a2703a

View File

@ -306,6 +306,11 @@ class Rocket(implicit p: Parameters) extends CoreModule()(p) {
ex_reg_flush_pipe := id_ctrl.fence_i || id_csr_flush || csr.io.singleStep ex_reg_flush_pipe := id_ctrl.fence_i || id_csr_flush || csr.io.singleStep
ex_reg_load_use := id_load_use ex_reg_load_use := id_load_use
when (id_ctrl.jalr && csr.io.status.debug) {
ex_reg_flush_pipe := true
ex_ctrl.fence_i := true
}
for (i <- 0 until id_raddr.size) { for (i <- 0 until id_raddr.size) {
val do_bypass = id_bypass_src(i).reduce(_||_) val do_bypass = id_bypass_src(i).reduce(_||_)
val bypass_src = PriorityEncoder(id_bypass_src(i)) val bypass_src = PriorityEncoder(id_bypass_src(i))