修复jalr指令跳转目标问题

This commit is contained in:
Liphen 2024-05-08 20:44:30 +08:00
parent 4f32948d0b
commit be93752841
1 changed files with 9 additions and 9 deletions

View File

@ -32,13 +32,13 @@ class Bru extends Module {
BRUOpType.getBranchType(BRUOpType.blt) -> slt, BRUOpType.getBranchType(BRUOpType.blt) -> slt,
BRUOpType.getBranchType(BRUOpType.bltu) -> sltu BRUOpType.getBranchType(BRUOpType.bltu) -> sltu
) )
io.out.branch := valid &
(LookupTree(BRUOpType.getBranchType(op), table) ^ BRUOpType.isBranchInvert(op) | val is_jump = BRUOpType.isJump(op)
BRUOpType.isJump(op)) val is_branch = (LookupTree(BRUOpType.getBranchType(op), table) ^ BRUOpType.isBranchInvert(op))
io.out.target := Mux1H(
Seq( val is_jalr = op === BRUOpType.jalr
(io.out.branch) -> (io.in.pc + io.in.info.imm),
(op === BRUOpType.jalr) -> ((src1 + src2) & ~1.U(XLEN.W)) io.out.branch := valid & (is_jump | is_branch)
) io.out.target := Mux(is_jalr, ((src1 + src2) & ~1.U(XLEN.W)), (io.in.pc + io.in.info.imm))
)
} }