From 3a1b5f01b20483a6a20bb363ab386057be121560 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Sun, 19 May 2013 23:27:47 -0700 Subject: [PATCH] don't take interrupts while they're disabled! a control bug allowed an interrupt to be taken on the instruction immediately following an interrupt-disabling instruction (but not thereafter). --- rocket/src/main/scala/ctrl.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocket/src/main/scala/ctrl.scala b/rocket/src/main/scala/ctrl.scala index 327d5e6b..584e9bce 100644 --- a/rocket/src/main/scala/ctrl.scala +++ b/rocket/src/main/scala/ctrl.scala @@ -530,7 +530,7 @@ class Control(implicit conf: RocketConfiguration) extends Component (ex_reg_fp_val && io.fpu.illegal_rm, UFix(2)))) mem_reg_replay := replay_ex && !take_pc_wb; - mem_reg_xcpt_interrupt := ex_reg_xcpt_interrupt && !take_pc_wb + mem_reg_xcpt_interrupt := ex_reg_xcpt_interrupt && !take_pc_wb && !mem_reg_replay_next when (ex_xcpt) { mem_reg_cause := ex_cause } mem_reg_div_mul_val := ex_reg_div_mul_val && io.dpath.div_mul_rdy