Lines Matching refs:insns

68 		struct sock_filter insns[MAX_INSNS];
71 void *insns;
104 self->u.ptr.insns = insn;
123 self->u.ptr.insns = insn;
150 self->u.ptr.insns = insn;
169 self->u.ptr.insns = insn;
192 self->u.ptr.insns = insn;
214 self->u.ptr.insns = insn;
240 self->u.ptr.insns = insn;
263 self->u.ptr.insns = insn;
289 self->u.ptr.insns = insn;
314 self->u.ptr.insns = insn;
343 self->u.ptr.insns = insn;
372 self->u.ptr.insns = insn;
395 self->u.ptr.insns = insn;
425 self->u.ptr.insns = insn;
450 self->u.ptr.insns = insn;
467 static int __bpf_ld_imm64(struct bpf_insn insns[2], u8 reg, s64 imm64)
471 memcpy(insns, tmp, sizeof(tmp));
483 struct bpf_insn *insns;
487 insns = kmalloc_array(len, sizeof(*insns), GFP_KERNEL);
488 if (!insns)
491 i = __bpf_ld_imm64(insns, R1, 0x0123456789abcdefULL);
492 insns[i++] = BPF_ALU64_IMM(BPF_MOV, R0, 1);
493 insns[i++] = BPF_JMP_IMM(jmp, R0, imm, S16_MAX);
494 insns[i++] = BPF_ALU64_IMM(BPF_MOV, R0, 2);
495 insns[i++] = BPF_EXIT_INSN();
505 insns[i++] = BPF_ALU32_REG(op, R0, R1);
507 insns[i++] = BPF_ALU64_REG(op, R0, R1);
510 insns[i++] = BPF_EXIT_INSN();
511 self->u.ptr.insns = insns;
662 self->u.ptr.insns = insn;
772 self->u.ptr.insns = insn;
827 struct bpf_insn *insns;
837 /* Compute the maximum number of insns and allocate the buffer */
839 insns = kmalloc_array(len, sizeof(*insns), GFP_KERNEL);
840 if (!insns)
844 insns[i++] = BPF_ALU64_IMM(BPF_MOV, R0, 0);
862 &insns[i],
879 i += (*emit)(self, arg, &insns[i],
884 insns[i++] = BPF_ALU64_IMM(BPF_MOV, R0, 1);
885 insns[i++] = BPF_EXIT_INSN();
888 self->u.ptr.insns = insns;
917 struct bpf_insn *insns, s64 dst, s64 imm)
923 if (!insns)
927 i += __bpf_ld_imm64(&insns[i], R1, dst);
928 i += __bpf_ld_imm64(&insns[i], R3, res);
929 insns[i++] = BPF_ALU64_IMM(op, R1, imm);
930 insns[i++] = BPF_JMP_REG(BPF_JEQ, R1, R3, 1);
931 insns[i++] = BPF_EXIT_INSN();
938 struct bpf_insn *insns, s64 dst, s64 imm)
944 if (!insns)
948 i += __bpf_ld_imm64(&insns[i], R1, dst);
949 i += __bpf_ld_imm64(&insns[i], R3, (u32)res);
950 insns[i++] = BPF_ALU32_IMM(op, R1, imm);
951 insns[i++] = BPF_JMP_REG(BPF_JEQ, R1, R3, 1);
952 insns[i++] = BPF_EXIT_INSN();
959 struct bpf_insn *insns, s64 dst, s64 src)
965 if (!insns)
969 i += __bpf_ld_imm64(&insns[i], R1, dst);
970 i += __bpf_ld_imm64(&insns[i], R2, src);
971 i += __bpf_ld_imm64(&insns[i], R3, res);
972 insns[i++] = BPF_ALU64_REG(op, R1, R2);
973 insns[i++] = BPF_JMP_REG(BPF_JEQ, R1, R3, 1);
974 insns[i++] = BPF_EXIT_INSN();
981 struct bpf_insn *insns, s64 dst, s64 src)
987 if (!insns)
991 i += __bpf_ld_imm64(&insns[i], R1, dst);
992 i += __bpf_ld_imm64(&insns[i], R2, src);
993 i += __bpf_ld_imm64(&insns[i], R3, (u32)res);
994 insns[i++] = BPF_ALU32_REG(op, R1, R2);
995 insns[i++] = BPF_JMP_REG(BPF_JEQ, R1, R3, 1);
996 insns[i++] = BPF_EXIT_INSN();
1221 struct bpf_insn *insns;
1227 insns = kmalloc_array(len, sizeof(*insns), GFP_KERNEL);
1228 if (!insns)
1248 i += __bpf_ld_imm64(&insns[i], rd, dst);
1251 insns[i++] = BPF_ALU32_IMM(op, rd, imm);
1253 insns[i++] = BPF_ALU64_IMM(op, rd, imm);
1255 insns[i++] = BPF_JMP32_IMM(BPF_JEQ, rd, res, 2);
1256 insns[i++] = BPF_MOV64_IMM(R0, __LINE__);
1257 insns[i++] = BPF_EXIT_INSN();
1259 insns[i++] = BPF_ALU64_IMM(BPF_RSH, rd, 32);
1260 insns[i++] = BPF_JMP32_IMM(BPF_JEQ, rd, res >> 32, 2);
1261 insns[i++] = BPF_MOV64_IMM(R0, __LINE__);
1262 insns[i++] = BPF_EXIT_INSN();
1265 insns[i++] = BPF_MOV64_IMM(R0, 1);
1266 insns[i++] = BPF_EXIT_INSN();
1268 self->u.ptr.insns = insns;
1405 struct bpf_insn *insns;
1409 insns = kmalloc_array(len, sizeof(*insns), GFP_KERNEL);
1410 if (!insns)
1438 i += __bpf_ld_imm64(&insns[i], rd, dst);
1439 i += __bpf_ld_imm64(&insns[i], rs, src);
1442 insns[i++] = BPF_ALU32_REG(op, rd, rs);
1444 insns[i++] = BPF_ALU64_REG(op, rd, rs);
1446 insns[i++] = BPF_JMP32_IMM(BPF_JEQ, rd, val, 2);
1447 insns[i++] = BPF_MOV64_IMM(R0, __LINE__);
1448 insns[i++] = BPF_EXIT_INSN();
1450 insns[i++] = BPF_ALU64_IMM(BPF_RSH, rd, 32);
1451 insns[i++] = BPF_JMP32_IMM(BPF_JEQ, rd, val >> 32, 2);
1452 insns[i++] = BPF_MOV64_IMM(R0, __LINE__);
1453 insns[i++] = BPF_EXIT_INSN();
1457 insns[i++] = BPF_MOV64_IMM(R0, 1);
1458 insns[i++] = BPF_EXIT_INSN();
1460 self->u.ptr.insns = insns;
1595 struct bpf_insn *insns, s64 dst, s64 src)
1601 if (!insns)
1618 i += __bpf_ld_imm64(&insns[i], R0, keep);
1619 i += __bpf_ld_imm64(&insns[i], R1, dst);
1620 i += __bpf_ld_imm64(&insns[i], R2, src);
1621 i += __bpf_ld_imm64(&insns[i], R3, res);
1622 i += __bpf_ld_imm64(&insns[i], R4, fetch);
1623 i += __bpf_ld_imm64(&insns[i], R5, keep);
1625 insns[i++] = BPF_STX_MEM(BPF_DW, R10, R1, -8);
1626 insns[i++] = BPF_ATOMIC_OP(BPF_DW, op, R10, R2, -8);
1627 insns[i++] = BPF_LDX_MEM(BPF_DW, R1, R10, -8);
1629 insns[i++] = BPF_JMP_REG(BPF_JEQ, R1, R3, 1);
1630 insns[i++] = BPF_EXIT_INSN();
1632 insns[i++] = BPF_JMP_REG(BPF_JEQ, R2, R4, 1);
1633 insns[i++] = BPF_EXIT_INSN();
1635 insns[i++] = BPF_JMP_REG(BPF_JEQ, R0, R5, 1);
1636 insns[i++] = BPF_EXIT_INSN();
1642 struct bpf_insn *insns, s64 dst, s64 src)
1648 if (!insns)
1665 i += __bpf_ld_imm64(&insns[i], R0, keep);
1666 i += __bpf_ld_imm64(&insns[i], R1, (u32)dst);
1667 i += __bpf_ld_imm64(&insns[i], R2, src);
1668 i += __bpf_ld_imm64(&insns[i], R3, (u32)res);
1669 i += __bpf_ld_imm64(&insns[i], R4, fetch);
1670 i += __bpf_ld_imm64(&insns[i], R5, keep);
1672 insns[i++] = BPF_STX_MEM(BPF_W, R10, R1, -4);
1673 insns[i++] = BPF_ATOMIC_OP(BPF_W, op, R10, R2, -4);
1674 insns[i++] = BPF_LDX_MEM(BPF_W, R1, R10, -4);
1676 insns[i++] = BPF_JMP_REG(BPF_JEQ, R1, R3, 1);
1677 insns[i++] = BPF_EXIT_INSN();
1679 insns[i++] = BPF_JMP_REG(BPF_JEQ, R2, R4, 1);
1680 insns[i++] = BPF_EXIT_INSN();
1682 insns[i++] = BPF_JMP_REG(BPF_JEQ, R0, R5, 1);
1683 insns[i++] = BPF_EXIT_INSN();
1689 struct bpf_insn *insns, s64 dst, s64 src)
1693 if (!insns)
1696 i += __bpf_ld_imm64(&insns[i], R0, ~dst);
1697 i += __bpf_ld_imm64(&insns[i], R1, dst);
1698 i += __bpf_ld_imm64(&insns[i], R2, src);
1701 insns[i++] = BPF_STX_MEM(BPF_DW, R10, R1, -8);
1702 insns[i++] = BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, R10, R2, -8);
1703 insns[i++] = BPF_LDX_MEM(BPF_DW, R3, R10, -8);
1705 insns[i++] = BPF_JMP_REG(BPF_JEQ, R1, R3, 2);
1706 insns[i++] = BPF_MOV64_IMM(R0, __LINE__);
1707 insns[i++] = BPF_EXIT_INSN();
1709 insns[i++] = BPF_JMP_REG(BPF_JEQ, R0, R3, 2);
1710 insns[i++] = BPF_MOV64_IMM(R0, __LINE__);
1711 insns[i++] = BPF_EXIT_INSN();
1714 insns[i++] = BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, R10, R2, -8);
1715 insns[i++] = BPF_LDX_MEM(BPF_DW, R3, R10, -8);
1717 insns[i++] = BPF_JMP_REG(BPF_JEQ, R2, R3, 2);
1718 insns[i++] = BPF_MOV64_IMM(R0, __LINE__);
1719 insns[i++] = BPF_EXIT_INSN();
1721 insns[i++] = BPF_JMP_REG(BPF_JEQ, R0, R1, 2);
1722 insns[i++] = BPF_MOV64_IMM(R0, __LINE__);
1723 insns[i++] = BPF_EXIT_INSN();
1729 struct bpf_insn *insns, s64 dst, s64 src)
1733 if (!insns)
1736 i += __bpf_ld_imm64(&insns[i], R0, ~dst);
1737 i += __bpf_ld_imm64(&insns[i], R1, (u32)dst);
1738 i += __bpf_ld_imm64(&insns[i], R2, src);
1741 insns[i++] = BPF_STX_MEM(BPF_W, R10, R1, -4);
1742 insns[i++] = BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R2, -4);
1743 insns[i++] = BPF_ZEXT_REG(R0), /* Zext always inserted by verifier */
1744 insns[i++] = BPF_LDX_MEM(BPF_W, R3, R10, -4);
1746 insns[i++] = BPF_JMP32_REG(BPF_JEQ, R1, R3, 2);
1747 insns[i++] = BPF_MOV32_IMM(R0, __LINE__);
1748 insns[i++] = BPF_EXIT_INSN();
1750 insns[i++] = BPF_JMP_REG(BPF_JEQ, R0, R3, 2);
1751 insns[i++] = BPF_MOV32_IMM(R0, __LINE__);
1752 insns[i++] = BPF_EXIT_INSN();
1755 i += __bpf_ld_imm64(&insns[i], R0, dst);
1756 insns[i++] = BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R2, -4);
1757 insns[i++] = BPF_ZEXT_REG(R0), /* Zext always inserted by verifier */
1758 insns[i++] = BPF_LDX_MEM(BPF_W, R3, R10, -4);
1760 insns[i++] = BPF_JMP32_REG(BPF_JEQ, R2, R3, 2);
1761 insns[i++] = BPF_MOV32_IMM(R0, __LINE__);
1762 insns[i++] = BPF_EXIT_INSN();
1764 insns[i++] = BPF_JMP_REG(BPF_JEQ, R0, R1, 2);
1765 insns[i++] = BPF_MOV32_IMM(R0, __LINE__);
1766 insns[i++] = BPF_EXIT_INSN();
2020 self->u.ptr.insns = insn;
2177 self->u.ptr.insns = insn;
2239 self->u.ptr.insns = insn;
2303 struct bpf_insn *insns, s64 dst, s64 imm)
2307 if (insns) {
2311 insns[i++] = BPF_ALU32_IMM(BPF_MOV, R0, match);
2313 i += __bpf_ld_imm64(&insns[i], R1, dst);
2314 insns[i++] = BPF_JMP_IMM(op, R1, imm, 1);
2316 insns[i++] = BPF_JMP_IMM(BPF_JA, 0, 0, 1);
2317 insns[i++] = BPF_EXIT_INSN();
2326 struct bpf_insn *insns, s64 dst, s64 imm)
2330 if (insns) {
2334 i += __bpf_ld_imm64(&insns[i], R1, dst);
2335 insns[i++] = BPF_JMP32_IMM(op, R1, imm, 1);
2337 insns[i++] = BPF_JMP_IMM(BPF_JA, 0, 0, 1);
2338 insns[i++] = BPF_EXIT_INSN();
2347 struct bpf_insn *insns, s64 dst, s64 src)
2351 if (insns) {
2355 i += __bpf_ld_imm64(&insns[i], R1, dst);
2356 i += __bpf_ld_imm64(&insns[i], R2, src);
2357 insns[i++] = BPF_JMP_REG(op, R1, R2, 1);
2359 insns[i++] = BPF_JMP_IMM(BPF_JA, 0, 0, 1);
2360 insns[i++] = BPF_EXIT_INSN();
2369 struct bpf_insn *insns, s64 dst, s64 src)
2373 if (insns) {
2377 i += __bpf_ld_imm64(&insns[i], R1, dst);
2378 i += __bpf_ld_imm64(&insns[i], R2, src);
2379 insns[i++] = BPF_JMP32_REG(op, R1, R2, 1);
2381 insns[i++] = BPF_JMP_IMM(BPF_JA, 0, 0, 1);
2382 insns[i++] = BPF_EXIT_INSN();
2661 * ,------- JMP +4 * 3______________Preamble: 4 insns
2687 * | | | | | | | | | R0 = 9__________________Sequence: 3 * size - 1 insns
2704 struct bpf_insn *insns;
2707 insns = kmalloc_array(len, sizeof(*insns), GFP_KERNEL);
2708 if (!insns)
2712 insns[0] = BPF_ALU64_IMM(BPF_MOV, R0, 0);
2713 insns[1] = BPF_ALU64_IMM(BPF_MOV, R1, r1);
2714 insns[2] = BPF_ALU64_IMM(BPF_MOV, R2, r2);
2715 insns[3] = BPF_JMP_IMM(BPF_JA, 0, 0, 3 * size / 2);
2719 struct bpf_insn *ins = &insns[4 + 3 * ind];
2734 insns[len - 1] = BPF_EXIT_INSN();
2736 self->u.ptr.insns = insns;
3066 .u.insns = {
3085 .u.insns = {
3097 .u.insns = {
3112 .u.insns = {
3136 .u.insns = {
3152 .u.insns = {
3164 .u.insns = {
3175 .u.insns = {
3185 .u.insns = {
3198 .u.insns = {
3212 .u.insns = {
3225 .u.insns = {
3239 .u.insns = {
3260 .u.insns = {
3271 .u.insns = {
3282 .u.insns = {
3293 .u.insns = {
3312 .u.insns = {
3326 .u.insns = {
3340 .u.insns = {
3351 .u.insns = {
3362 .u.insns = {
3377 .u.insns = {
3395 .u.insns = {
3433 .u.insns = {
3460 .u.insns = {
3473 .u.insns = {
3495 .u.insns = {
3508 .u.insns = {
3521 .u.insns = {
3534 .u.insns = {
3547 .u.insns = {
3566 .u.insns = {
3598 .u.insns = {
3643 .u.insns = {
3696 .u.insns = {
4536 .u.insns = {
4547 .u.insns = {
4559 .u.insns = {
4572 .u.insns = {
4584 .u.insns = {
4666 .u.insns = {
4677 .u.insns = {
4689 .u.insns = {
4779 .u.insns = {
4852 .u.insns = {
4865 .u.insns = {
9765 BPF_LD_IMM64(R1, 3), /* note: this takes 2 insns */
9795 BPF_LD_IMM64(R1, 2), /* note: this takes 2 insns */
10406 .u.insns = {
10422 .u.insns = {
10438 .u.insns = {
10454 .u.insns = {
10466 .u.insns = {
10478 .u.insns = {
10493 .u.insns = {
10508 .u.insns = {
10523 .u.insns = {
10534 .u.insns = {
10552 .u.insns = {
10562 .u.insns = {
10573 .u.insns = {
10584 .u.insns = {
10595 .u.insns = {
10606 .u.insns = {
10617 .u.insns = {
10631 .u.insns = {
10647 .u.insns = {
10663 .u.insns = {
10679 .u.insns = {
10690 .u.insns = {
10701 .u.insns = {
10712 .u.insns = {
10730 .u.insns = {
10748 .u.insns = {
10766 .u.insns = {
10784 .u.insns = {
10802 .u.insns = {
10813 .u.insns = {
10824 .u.insns = {
10835 .u.insns = {
10852 .u.insns = {
10862 .u.insns = {
10872 .u.insns = {
10881 .u.insns = {
10891 .u.insns = {
10901 .u.insns = {
10914 .u.insns = {
10931 .u.insns = {
10948 .u.insns = {
10958 .u.insns = {
10968 .u.insns = {
10977 .u.insns = {
10987 .u.insns = {
10997 .u.insns = {
11014 .u.insns = {
11031 .u.insns = {
11048 .u.insns = {
11065 .u.insns = {
11075 .u.insns = {
11085 .u.insns = {
11094 .u.insns = {
11104 .u.insns = {
11114 .u.insns = {
11125 .u.insns = {
11139 .u.insns = {
11151 .u.insns = {
11163 .u.insns = {
11175 .u.insns = {
11187 .u.insns = {
11203 .u.insns = {
11219 .u.insns = {
11233 .u.insns = {
11249 .u.insns = {
11263 .u.insns = {
11279 .u.insns = {
11293 .u.insns = {
11309 .u.insns = {
11323 .u.insns = {
11339 .u.insns = {
11353 .u.insns = {
11369 .u.insns = {
11476 .u.insns = {
14417 fp = tests[which].u.insns;
14428 return tests[which].u.ptr.insns;
14430 return tests[which].u.insns;
14805 kfree(tests[i].u.ptr.insns);
14806 tests[i].u.ptr.insns = NULL;
14844 struct bpf_insn insns[MAX_INSNS];
14907 .insns = {
14916 .insns = {
14926 .insns = {
14936 .insns = {
14946 .insns = {
14964 .insns = {
14976 .insns = {
14988 .insns = {
15010 .insns = {
15022 .insns = {
15063 struct bpf_insn *insn = &test->insns[len];
15080 memcpy(fp->insnsi, test->insns, len * sizeof(struct bpf_insn));