Lines Matching defs:insn

670 static int get_probe_mem_regno(const u8 *insn)
673 * insn must point to llgc, llgh, llgf, lg, lgb, lgh or lgf, which have
676 if (insn[0] != 0xe3) /* common prefix */
678 if (insn[5] != 0x90 && /* llgc */
679 insn[5] != 0x91 && /* llgh */
680 insn[5] != 0x16 && /* llgf */
681 insn[5] != 0x04 && /* lg */
682 insn[5] != 0x77 && /* lgb */
683 insn[5] != 0x15 && /* lgh */
684 insn[5] != 0x14) /* lgf */
686 return insn[1] >> 4;
702 u8 *insn;
708 insn = jit->prg_buf + probe_prg;
709 reg = get_probe_mem_regno(insn);
713 if (WARN_ON_ONCE(probe_prg + insn_length(*insn) != nop_prg))
723 delta = jit->prg_buf + prg - (u8 *)&ex->insn;
727 ex->insn = delta;
781 struct bpf_insn *insn = &fp->insnsi[i];
782 s32 branch_oc_off = insn->off;
783 u32 dst_reg = insn->dst_reg;
784 u32 src_reg = insn->src_reg;
787 s32 imm = insn->imm;
788 s16 off = insn->off;
794 if (BPF_CLASS(insn->code) == BPF_LDX &&
795 (BPF_MODE(insn->code) == BPF_PROBE_MEM ||
796 BPF_MODE(insn->code) == BPF_PROBE_MEMSX))
799 switch (insn->code) {
804 switch (insn->off) {
808 if (insn_is_zext(&insn[1]))
826 switch (insn->off) {
848 if (insn_is_zext(&insn[1]))
863 imm64 = (u64)(u32) insn[0].imm | ((u64)(u32) insn[1].imm) << 32;
955 int rc_reg = BPF_OP(insn->code) == BPF_DIV ? REG_W1 : REG_W0;
975 if (insn_is_zext(&insn[1]))
982 int rc_reg = BPF_OP(insn->code) == BPF_DIV ? REG_W1 : REG_W0;
1007 int rc_reg = BPF_OP(insn->code) == BPF_DIV ? REG_W1 : REG_W0;
1010 if (BPF_OP(insn->code) == BPF_MOD)
1064 if (insn_is_zext(&insn[1]))
1071 int rc_reg = BPF_OP(insn->code) == BPF_DIV ? REG_W1 : REG_W0;
1074 if (BPF_OP(insn->code) == BPF_MOD)
1322 if (insn_is_zext(&insn[1]))
1344 if (insn_is_zext(&insn[1]))
1422 bool is32 = BPF_SIZE(insn->code) == BPF_W;
1424 switch (insn->imm) {
1428 (insn->imm & BPF_FETCH) ? src_reg : REG_W0, \
1430 if (is32 && (insn->imm & BPF_FETCH)) \
1466 if (is32 && insn_is_zext(&insn[1]))
1475 pr_err("Unknown atomic operation %02x\n", insn->imm);
1490 if (insn_is_zext(&insn[1]))
1504 if (insn_is_zext(&insn[1]))
1518 if (insn_is_zext(&insn[1]))
1543 ret = bpf_jit_get_func_addr(fp, insn, extra_pass,
1565 if (insn->src_reg == BPF_PSEUDO_KFUNC_CALL) {
1566 m = bpf_jit_find_kfunc_model(fp, insn);
1701 * For BPF relative branches: insn = insn + off_insns + 1
1756 if (BPF_CLASS(insn->code) == BPF_JMP32) {
1812 bool is_jmp32 = BPF_CLASS(insn->code) == BPF_JMP32;
1820 is_jmp32 = BPF_CLASS(insn->code) == BPF_JMP32;
1841 is_jmp32 = BPF_CLASS(insn->code) == BPF_JMP32;
1859 is_jmp32 = BPF_CLASS(insn->code) == BPF_JMP32;
1892 pr_err("Unknown opcode %02x\n", insn->code);
2013 /* We need two entries per insn. */
2152 } __packed insn;
2157 err = copy_from_kernel_nofault(&insn, ip, sizeof(insn));
2160 if (insn.opc != (0xc004 | (old_addr ? 0xf0 : 0)))
2164 insn.disp == ((char *)new_addr - (char *)ip) >> 1) {
2171 plt = ip + (insn.disp << 1);
2187 insn.opc = 0xc004 | (new_addr ? 0xf0 : 0);
2188 s390_kernel_write((char *)ip + 1, (char *)&insn.opc + 1, 1);