dcache fix
This commit is contained in:
parent
7479e085ec
commit
d8ffecf565
@ -305,6 +305,7 @@ class rocketCtrl extends Component
|
|||||||
val mem_cmd_load = mem_reg_mem_val && (mem_reg_mem_cmd === M_XRD);
|
val mem_cmd_load = mem_reg_mem_val && (mem_reg_mem_cmd === M_XRD);
|
||||||
val replay_mem_pc_plus4 = mem_cmd_load && !io.dmem.resp_val;
|
val replay_mem_pc_plus4 = mem_cmd_load && !io.dmem.resp_val;
|
||||||
val dcache_miss = Reg(replay_mem_pc_plus4);
|
val dcache_miss = Reg(replay_mem_pc_plus4);
|
||||||
|
val replay_mem = replay_mem_pc | replay_mem_pc_plus4;
|
||||||
|
|
||||||
io.dpath.mem_load := mem_cmd_load;
|
io.dpath.mem_load := mem_cmd_load;
|
||||||
io.dpath.dcache_miss := dcache_miss;
|
io.dpath.dcache_miss := dcache_miss;
|
||||||
@ -318,7 +319,7 @@ class rocketCtrl extends Component
|
|||||||
Mux(jr_taken, PC_JR,
|
Mux(jr_taken, PC_JR,
|
||||||
Mux(j_taken, PC_J,
|
Mux(j_taken, PC_J,
|
||||||
Mux(io.dpath.btb_hit, PC_BTB,
|
Mux(io.dpath.btb_hit, PC_BTB,
|
||||||
PC_4)))))));
|
PC_4))))))));
|
||||||
|
|
||||||
io.dpath.wen_btb := ~ex_reg_btb_hit & br_taken;
|
io.dpath.wen_btb := ~ex_reg_btb_hit & br_taken;
|
||||||
|
|
||||||
@ -330,7 +331,8 @@ class rocketCtrl extends Component
|
|||||||
io.dpath.exception |
|
io.dpath.exception |
|
||||||
ex_reg_privileged |
|
ex_reg_privileged |
|
||||||
ex_reg_eret |
|
ex_reg_eret |
|
||||||
replay_mem;
|
replay_mem_pc |
|
||||||
|
replay_mem_pc_plus4;
|
||||||
|
|
||||||
io.dpath.stallf :=
|
io.dpath.stallf :=
|
||||||
~take_pc &
|
~take_pc &
|
||||||
|
@ -132,7 +132,7 @@ class rocketDpath extends Component
|
|||||||
Mux(io.ctrl.sel_pc === PC_PCR, ex_pcr(31,0).toUFix,
|
Mux(io.ctrl.sel_pc === PC_PCR, ex_pcr(31,0).toUFix,
|
||||||
Mux(io.ctrl.sel_pc === PC_MEM, mem_reg_pc,
|
Mux(io.ctrl.sel_pc === PC_MEM, mem_reg_pc,
|
||||||
Mux(io.ctrl.sel_pc === PC_MEM4, mem_reg_pc_plus4,
|
Mux(io.ctrl.sel_pc === PC_MEM4, mem_reg_pc_plus4,
|
||||||
UFix(0, 32)))))))));
|
UFix(0, 32))))))))));
|
||||||
|
|
||||||
when (!io.host.start){
|
when (!io.host.start){
|
||||||
if_reg_pc <== UFix(0, 32); //32'hFFFF_FFFC;
|
if_reg_pc <== UFix(0, 32); //32'hFFFF_FFFC;
|
||||||
|
Loading…
Reference in New Issue
Block a user