Browse Source

Zicfilp: Implement lpad insn behavior

pull/1582/head
Ming-Yi Lai 2 years ago
parent
commit
6408a0f61b
  1. 6
      riscv/insns/lpad.h
  2. 4
      riscv/riscv.mk.in

6
riscv/insns/lpad.h

@ -0,0 +1,6 @@
if (ZICFILP_xLPE(STATE.v, STATE.prv) && STATE.elp == elp_t::LP_EXPECTED) {
software_check(pc % 4 == 0 &&
((READ_REG(7) & 0xFFFFF000ULL) == (static_cast<uint64_t>(insn.u_imm()) & 0xFFFFF000ULL) || insn.u_imm() == 0LL),
LANDING_PAD_FAULT);
STATE.elp = elp_t::NO_LP_EXPECTED;
}

4
riscv/riscv.mk.in

@ -1392,6 +1392,9 @@ riscv_insn_ext_zimop = \
mop_r_N \
mop_rr_N \
riscv_insn_ext_zicfilp = \
lpad
riscv_insn_ext_zvk = \
$(riscv_insn_ext_zvbb) \
$(riscv_insn_ext_zvbc) \
@ -1431,6 +1434,7 @@ riscv_insn_list = \
$(riscv_insn_smrnmi) \
$(riscv_insn_svinval) \
$(riscv_insn_ext_zimop) \
$(riscv_insn_ext_zicfilp) \
riscv_gen_srcs = $(addsuffix .cc,$(riscv_insn_list))

Loading…
Cancel
Save