From 4c82f6b77e853d66c56c0945d210c96c77fc3c02 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Fri, 28 Jul 2017 13:13:52 -0700 Subject: [PATCH] Don't refill BTB on not-taken branches --- src/main/scala/rocket/RocketCore.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/rocket/RocketCore.scala b/src/main/scala/rocket/RocketCore.scala index 9c103ca3..855bb046 100644 --- a/src/main/scala/rocket/RocketCore.scala +++ b/src/main/scala/rocket/RocketCore.scala @@ -593,7 +593,7 @@ class Rocket(implicit p: Parameters) extends CoreModule()(p) ibuf.io.inst(0).ready := !ctrl_stalld || csr.io.interrupt - io.imem.btb_update.valid := (mem_reg_replay && mem_reg_btb_hit) || (mem_reg_valid && !take_pc_wb && mem_misprediction) + io.imem.btb_update.valid := (mem_reg_replay && mem_reg_btb_hit) || (mem_reg_valid && !take_pc_wb && mem_wrong_npc && (!mem_cfi || mem_cfi_taken)) io.imem.btb_update.bits.isValid := !mem_reg_replay && mem_cfi io.imem.btb_update.bits.cfiType := Mux((mem_ctrl.jal || mem_ctrl.jalr) && mem_waddr(0), CFIType.call,