From 78cad5bbcc87f39d4aef6e9171a8cc6ebf32c197 Mon Sep 17 00:00:00 2001 From: James Clarke Date: Sat, 2 Nov 2019 20:38:35 +0000 Subject: [PATCH] Fix BTB entry aliasing with C extension --- src_Core/RISCY_OOO/procs/lib/Btb.bsv | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src_Core/RISCY_OOO/procs/lib/Btb.bsv b/src_Core/RISCY_OOO/procs/lib/Btb.bsv index bd035a7..713013f 100644 --- a/src_Core/RISCY_OOO/procs/lib/Btb.bsv +++ b/src_Core/RISCY_OOO/procs/lib/Btb.bsv @@ -39,9 +39,10 @@ interface NextAddrPred; endinterface // Local BTB Typedefs +typedef 1 PcLsbsIgnore; typedef 256 BtbEntries; // 4KB BTB typedef Bit#(TLog#(BtbEntries)) BtbIndex; -typedef Bit#(TSub#(TSub#(AddrSz, TLog#(BtbEntries)), 2)) BtbTag; +typedef Bit#(TSub#(TSub#(AddrSz, TLog#(BtbEntries)), PcLsbsIgnore)) BtbTag; typedef struct { Addr pc; @@ -65,7 +66,7 @@ module mkBtb(NextAddrPred); Bool flushDone = True; `endif - function BtbIndex getIndex(Addr pc) = truncate(pc >> 2); + function BtbIndex getIndex(Addr pc) = truncate(pc >> valueof(PcLsbsIgnore)); function BtbTag getTag(Addr pc) = truncateLSB(pc); // no flush, accept update