Lines Matching refs:ins
111 check_alu_bele(const struct ebpf_insn *ins) in check_alu_bele() argument
113 if (ins->imm != 16 && ins->imm != 32 && ins->imm != 64) in check_alu_bele()
119 eval_exit(struct bpf_verifier *bvf, const struct ebpf_insn *ins) in eval_exit() argument
121 RTE_SET_USED(ins); in eval_exit()
179 eval_ld_imm64(struct bpf_verifier *bvf, const struct ebpf_insn *ins) in eval_ld_imm64() argument
185 val = (uint32_t)ins[0].imm | (uint64_t)(uint32_t)ins[1].imm << 32; in eval_ld_imm64()
187 rd = bvf->evst->rv + ins->dst_reg; in eval_ld_imm64()
585 eval_ld_mbuf(struct bpf_verifier *bvf, const struct ebpf_insn *ins) in eval_ld_mbuf() argument
590 mode = BPF_MODE(ins->code); in eval_ld_mbuf()
597 rs = bvf->evst->rv[ins->src_reg]; in eval_ld_mbuf()
601 eval_fill_imm(&ri, UINT64_MAX, ins->imm); in eval_ld_mbuf()
614 rv->v.size = bpf_size(BPF_SIZE(ins->code)); in eval_ld_mbuf()
634 eval_alu(struct bpf_verifier *bvf, const struct ebpf_insn *ins) in eval_alu() argument
643 opsz = (BPF_CLASS(ins->code) == BPF_ALU) ? in eval_alu()
649 rd = st->rv + ins->dst_reg; in eval_alu()
651 if (BPF_SRC(ins->code) == BPF_X) { in eval_alu()
652 rs = st->rv[ins->src_reg]; in eval_alu()
655 eval_fill_imm(&rs, msk, ins->imm); in eval_alu()
659 op = BPF_OP(ins->code); in eval_alu()
662 if (op == BPF_XOR && BPF_SRC(ins->code) == BPF_X && in eval_alu()
663 ins->src_reg == ins->dst_reg) { in eval_alu()
704 eval_bele(struct bpf_verifier *bvf, const struct ebpf_insn *ins) in eval_bele() argument
711 msk = RTE_LEN2MASK(ins->imm, uint64_t); in eval_bele()
714 rd = st->rv + ins->dst_reg; in eval_bele()
721 if (ins->code == (BPF_ALU | EBPF_END | EBPF_TO_BE)) in eval_bele()
726 if (ins->code == (BPF_ALU | EBPF_END | EBPF_TO_LE)) in eval_bele()
794 eval_load(struct bpf_verifier *bvf, const struct ebpf_insn *ins) in eval_load() argument
804 rd = st->rv + ins->dst_reg; in eval_load()
805 rs = st->rv[ins->src_reg]; in eval_load()
806 opsz = bpf_size(BPF_SIZE(ins->code)); in eval_load()
809 err = eval_ptr(bvf, &rs, opsz, 1, ins->off); in eval_load()
880 eval_store(struct bpf_verifier *bvf, const struct ebpf_insn *ins) in eval_store() argument
888 opsz = bpf_size(BPF_SIZE(ins->code)); in eval_store()
892 rd = st->rv[ins->dst_reg]; in eval_store()
894 if (BPF_CLASS(ins->code) == BPF_STX) { in eval_store()
895 rs = st->rv[ins->src_reg]; in eval_store()
898 eval_fill_imm(&rs, msk, ins->imm); in eval_store()
904 err = eval_ptr(bvf, &rd, opsz, 1, ins->off); in eval_store()
911 if (BPF_CLASS(ins->code) == BPF_STX && in eval_store()
912 BPF_MODE(ins->code) == EBPF_XADD) in eval_store()
972 eval_call(struct bpf_verifier *bvf, const struct ebpf_insn *ins) in eval_call() argument
979 idx = ins->imm; in eval_call()
1076 eval_jcc(struct bpf_verifier *bvf, const struct ebpf_insn *ins) in eval_jcc() argument
1087 frd = fst->rv + ins->dst_reg; in eval_jcc()
1088 trd = tst->rv + ins->dst_reg; in eval_jcc()
1090 if (BPF_SRC(ins->code) == BPF_X) { in eval_jcc()
1091 frs = fst->rv + ins->src_reg; in eval_jcc()
1092 trs = tst->rv + ins->src_reg; in eval_jcc()
1096 eval_fill_imm(frs, UINT64_MAX, ins->imm); in eval_jcc()
1097 eval_fill_imm(trs, UINT64_MAX, ins->imm); in eval_jcc()
1104 op = BPF_OP(ins->code); in eval_jcc()
1733 check_syntax(const struct ebpf_insn *ins) in check_syntax() argument
1740 op = ins->code; in check_syntax()
1745 if ((ins_chk[op].mask.dreg & 1 << ins->dst_reg) == 0) in check_syntax()
1748 if ((ins_chk[op].mask.sreg & 1 << ins->src_reg) == 0) in check_syntax()
1751 off = ins->off; in check_syntax()
1755 imm = ins->imm; in check_syntax()
1760 return ins_chk[op].check(ins); in check_syntax()
1920 const struct ebpf_insn *ins; in log_unreachable() local
1925 ins = bvf->prm->ins + i; in log_unreachable()
1928 ins->code != (BPF_LD | BPF_IMM | EBPF_DW)) in log_unreachable()
1970 const struct ebpf_insn *ins; in validate() local
1976 ins = bvf->prm->ins + i; in validate()
1979 err = check_syntax(ins); in validate()
1991 switch (ins->code) { in validate()
2016 rc |= add_edge(bvf, node, i + ins->off + 1); in validate()
2021 rc |= add_edge(bvf, node, i + ins->off + 1); in validate()
2180 log_eval_state(const struct bpf_verifier *bvf, const struct ebpf_insn *ins, in log_eval_state() argument
2189 rv = st->rv + ins->dst_reg; in log_eval_state()
2198 ins->dst_reg, in log_eval_state()
2220 const struct ebpf_insn *ins; in evaluate() local
2241 ins = bvf->prm->ins; in evaluate()
2256 op = ins[idx].code; in evaluate()
2263 err = ins_chk[op].eval(bvf, ins + idx); in evaluate()
2271 log_eval_state(bvf, ins + idx, idx, RTE_LOG_DEBUG); in evaluate()