Skip to content

Commit 6408a0f

Browse files
committed
Zicfilp: Implement lpad insn behavior
1 parent dffd421 commit 6408a0f

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

riscv/insns/lpad.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
if (ZICFILP_xLPE(STATE.v, STATE.prv) && STATE.elp == elp_t::LP_EXPECTED) {
2+
software_check(pc % 4 == 0 &&
3+
((READ_REG(7) & 0xFFFFF000ULL) == (static_cast<uint64_t>(insn.u_imm()) & 0xFFFFF000ULL) || insn.u_imm() == 0LL),
4+
LANDING_PAD_FAULT);
5+
STATE.elp = elp_t::NO_LP_EXPECTED;
6+
}

riscv/riscv.mk.in

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1392,6 +1392,9 @@ riscv_insn_ext_zimop = \
13921392
mop_r_N \
13931393
mop_rr_N \
13941394

1395+
riscv_insn_ext_zicfilp = \
1396+
lpad
1397+
13951398
riscv_insn_ext_zvk = \
13961399
$(riscv_insn_ext_zvbb) \
13971400
$(riscv_insn_ext_zvbc) \
@@ -1431,6 +1434,7 @@ riscv_insn_list = \
14311434
$(riscv_insn_smrnmi) \
14321435
$(riscv_insn_svinval) \
14331436
$(riscv_insn_ext_zimop) \
1437+
$(riscv_insn_ext_zicfilp) \
14341438

14351439
riscv_gen_srcs = $(addsuffix .cc,$(riscv_insn_list))
14361440

0 commit comments

Comments
 (0)