Lines Matching refs:dst_reg

298 static u32 convert_skb_access(int skb_field, int dst_reg, int src_reg,
307 *insn++ = BPF_LDX_MEM(BPF_W, dst_reg, src_reg,
312 *insn++ = BPF_LDX_MEM(BPF_B, dst_reg, src_reg, PKT_TYPE_OFFSET);
313 *insn++ = BPF_ALU32_IMM(BPF_AND, dst_reg, PKT_TYPE_MAX);
315 *insn++ = BPF_ALU32_IMM(BPF_RSH, dst_reg, 5);
322 *insn++ = BPF_LDX_MEM(BPF_H, dst_reg, src_reg,
329 /* dst_reg = *(u16 *) (src_reg + offsetof(vlan_tci)) */
330 *insn++ = BPF_LDX_MEM(BPF_H, dst_reg, src_reg,
335 *insn++ = BPF_LDX_MEM(BPF_W, dst_reg, src_reg,
337 *insn++ = BPF_JMP_IMM(BPF_JEQ, dst_reg, 0, 1);
338 *insn++ = BPF_ALU32_IMM(BPF_MOV, dst_reg, 1);
731 insn->dst_reg = BPF_REG_A;
735 insn->dst_reg = BPF_REG_A;
7076 si->dst_reg, si->src_reg, \
7088 si->dst_reg, si->src_reg, \
7103 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
7270 si->dst_reg, si->src_reg, \
9335 si->dst_reg, si->src_reg,
9341 si->dst_reg, si->src_reg,
9347 si->dst_reg, si->src_reg,
9358 __u8 value_reg = si->dst_reg;
9360 /* AX is needed because src_reg and dst_reg could be the same */
9374 static struct bpf_insn *bpf_convert_shinfo_access(__u8 dst_reg, __u8 skb_reg,
9377 /* si->dst_reg = skb_shinfo(SKB); */
9383 dst_reg, skb_reg,
9385 *insn++ = BPF_ALU64_REG(BPF_ADD, dst_reg, BPF_REG_AX);
9388 dst_reg, skb_reg,
9399 __u8 value_reg = si->dst_reg;
9408 /* AX is needed because src_reg and dst_reg could be the same */
9434 __u8 skb_reg = si->dst_reg;
9465 (si)->dst_reg, (si)->src_reg, (off), (si)->imm)
9477 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
9483 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->src_reg,
9489 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->src_reg,
9500 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
9506 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
9513 si->dst_reg, si->src_reg,
9515 *insn++ = BPF_JMP_IMM(BPF_JEQ, si->dst_reg, 0, 1);
9516 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
9522 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
9533 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
9540 *insn++ = BPF_LDX_MEM(BPF_B, si->dst_reg, si->src_reg,
9542 *insn++ = BPF_ALU32_IMM(BPF_AND, si->dst_reg, PKT_TYPE_MAX);
9544 *insn++ = BPF_ALU32_IMM(BPF_RSH, si->dst_reg, 5);
9561 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->src_reg,
9569 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
9572 *insn++ = BPF_JMP_IMM(BPF_JEQ, si->dst_reg, 0, 1);
9573 *insn++ = BPF_ALU32_IMM(BPF_MOV, si->dst_reg, 1);
9577 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->src_reg,
9597 *insn++ = BPF_LDX_MEM(BPF_SIZE(si->code), si->dst_reg,
9612 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg,
9618 si->dst_reg, si->src_reg,
9627 *insn++ = BPF_LDX_MEM(BPF_SIZEOF(void *), si->dst_reg,
9636 *insn++ = BPF_LDX_MEM(BPF_SIZEOF(void *), si->dst_reg,
9647 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->src_reg,
9653 *insn++ = BPF_MOV64_REG(si->dst_reg, si->dst_reg);
9655 *insn++ = BPF_MOV64_IMM(si->dst_reg, 0);
9661 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
9664 *insn++ = BPF_JMP_IMM(BPF_JGE, si->dst_reg, MIN_NAPI_ID, 1);
9665 *insn++ = BPF_MOV64_IMM(si->dst_reg, 0);
9668 *insn++ = BPF_MOV64_IMM(si->dst_reg, 0);
9675 si->dst_reg, si->src_reg,
9677 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->dst_reg,
9686 si->dst_reg, si->src_reg,
9688 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
9698 si->dst_reg, si->src_reg,
9700 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
9715 si->dst_reg, si->src_reg,
9717 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
9722 *insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
9735 si->dst_reg, si->src_reg,
9737 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
9742 *insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
9750 si->dst_reg, si->src_reg,
9752 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->dst_reg,
9757 *insn++ = BPF_ALU32_IMM(BPF_LSH, si->dst_reg, 16);
9765 si->dst_reg, si->src_reg,
9767 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->dst_reg,
9786 insn = bpf_convert_shinfo_access(si->dst_reg, si->src_reg, insn);
9788 si->dst_reg, si->dst_reg,
9794 insn = bpf_convert_shinfo_access(si->dst_reg, si->src_reg, insn);
9796 si->dst_reg, si->dst_reg,
9809 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg, off);
9814 si->dst_reg, si->src_reg,
9821 insn = bpf_convert_shinfo_access(si->dst_reg, si->src_reg, insn);
9823 si->dst_reg, si->dst_reg,
9849 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
9860 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
9871 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
9878 si->dst_reg, si->src_reg,
9889 si->dst_reg, si->src_reg,
9898 si->dst_reg, si->src_reg,
9906 BPF_SIZE(si->code), si->dst_reg, si->src_reg,
9915 BPF_SIZE(si->code), si->dst_reg, si->src_reg,
9927 BPF_SIZE(si->code), si->dst_reg, si->src_reg,
9936 *insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
9945 BPF_SIZE(si->code), si->dst_reg, si->src_reg,
9952 *insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
9960 si->dst_reg, si->src_reg,
9970 si->dst_reg, si->src_reg,
9980 si->dst_reg, si->src_reg,
9990 si->dst_reg, si->src_reg,
9995 *insn++ = BPF_JMP_IMM(BPF_JNE, si->dst_reg, NO_QUEUE_MAPPING,
9997 *insn++ = BPF_MOV64_IMM(si->dst_reg, -1);
9999 *insn++ = BPF_MOV64_IMM(si->dst_reg, -1);
10018 si->dst_reg, si->src_reg,
10020 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10042 si->dst_reg, si->src_reg,
10047 si->dst_reg, si->src_reg,
10052 si->dst_reg, si->src_reg,
10057 si->dst_reg, si->src_reg,
10060 si->dst_reg, si->dst_reg,
10062 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10067 si->dst_reg, si->src_reg,
10069 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10075 si->dst_reg, si->src_reg,
10078 si->dst_reg, si->dst_reg,
10080 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10100 *insn++ = BPF_LDX_MEM(BPF_FIELD_SIZEOF(S, F), si->dst_reg, \
10103 SIZE, si->dst_reg, si->dst_reg, \
10126 if (si->src_reg == tmp_reg || si->dst_reg == tmp_reg) \
10128 if (si->src_reg == tmp_reg || si->dst_reg == tmp_reg) \
10130 *insn++ = BPF_STX_MEM(BPF_DW, si->dst_reg, tmp_reg, \
10133 si->dst_reg, offsetof(S, F)); \
10140 *insn++ = BPF_LDX_MEM(BPF_DW, tmp_reg, si->dst_reg, \
10241 si->dst_reg, si->src_reg,
10261 int fullsock_reg = si->dst_reg, reg = BPF_REG_9, jmp = 2; \
10264 if (si->dst_reg == reg || si->src_reg == reg) \
10266 if (si->dst_reg == reg || si->src_reg == reg) \
10268 if (si->dst_reg == si->src_reg) { \
10282 if (si->dst_reg == si->src_reg) \
10288 si->dst_reg, si->src_reg, \
10292 si->dst_reg, si->dst_reg, \
10294 if (si->dst_reg == si->src_reg) { \
10304 int fullsock_reg = si->dst_reg, reg = BPF_REG_9, jmp = 1; \
10305 if (si->dst_reg == reg || si->src_reg == reg) \
10307 if (si->dst_reg == reg || si->src_reg == reg) \
10309 if (si->dst_reg == si->src_reg) { \
10323 if (si->dst_reg == si->src_reg) \
10329 si->dst_reg, si->src_reg, \
10331 if (si->dst_reg == si->src_reg) { \
10343 * The macro is called with two registers, dst_reg which contains a pointer
10346 * dst_reg because it may be used later in the program.
10356 if (si->dst_reg == reg || si->src_reg == reg) \
10358 if (si->dst_reg == reg || si->src_reg == reg) \
10360 *insn++ = BPF_STX_MEM(BPF_DW, si->dst_reg, reg, \
10366 reg, si->dst_reg, \
10372 reg, si->dst_reg, \
10379 *insn++ = BPF_LDX_MEM(BPF_DW, reg, si->dst_reg, \
10396 si->dst_reg, si->src_reg,
10412 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
10421 si->dst_reg, si->src_reg,
10423 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->dst_reg,
10432 si->dst_reg, si->src_reg,
10434 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10444 si->dst_reg, si->src_reg,
10446 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10461 si->dst_reg, si->src_reg,
10463 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10468 *insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
10482 si->dst_reg, si->src_reg,
10484 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10489 *insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
10498 si->dst_reg, si->src_reg,
10500 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->dst_reg,
10503 *insn++ = BPF_ALU32_IMM(BPF_LSH, si->dst_reg, 16);
10512 si->dst_reg, si->src_reg,
10514 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->dst_reg,
10522 si->dst_reg, si->src_reg,
10532 si->dst_reg, si->src_reg,
10534 *insn++ = BPF_LDX_MEM(BPF_B, si->dst_reg, si->dst_reg,
10546 si->dst_reg, si->src_reg,
10548 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10631 si->dst_reg, si->src_reg,
10638 si->dst_reg, si->src_reg,
10641 *insn++ = BPF_JMP_IMM(BPF_JEQ, si->dst_reg, 0, 1);
10643 si->dst_reg, si->dst_reg,
10649 si->dst_reg, si->src_reg,
10652 *insn++ = BPF_JMP_IMM(BPF_JEQ, si->dst_reg, 0, 1);
10654 si->dst_reg, si->dst_reg,
10663 si->dst_reg, si->src_reg,
10666 *insn++ = BPF_JMP_IMM(BPF_JEQ, si->dst_reg, 0, 1);
10669 si->dst_reg, si->dst_reg, off);
10676 si->dst_reg, si->src_reg,
10681 insn = bpf_convert_shinfo_access(si->dst_reg, si->dst_reg, insn);
10682 *insn++ = BPF_LDX_MEM(BPF_DW, si->dst_reg, si->dst_reg,
10686 *jmp_on_null_skb = BPF_JMP_IMM(BPF_JEQ, si->dst_reg, 0,
10702 if (si->src_reg == si->dst_reg) {
10705 if (si->src_reg == reg || si->dst_reg == reg)
10707 if (si->src_reg == reg || si->dst_reg == reg)
10711 reg = si->dst_reg;
10732 if (si->src_reg == si->dst_reg) {
10735 *insn++ = BPF_MOV64_REG(si->dst_reg, reg);
10769 *insn++ = BPF_LDX_MEM(BPF_SIZE(si->code), si->dst_reg,
10798 si->dst_reg, si->src_reg,
10803 si->dst_reg, si->src_reg,
10811 si->dst_reg, si->src_reg,
10813 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->dst_reg,
10822 si->dst_reg, si->src_reg,
10824 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10834 si->dst_reg, si->src_reg,
10836 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10851 si->dst_reg, si->src_reg,
10853 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10858 *insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
10872 si->dst_reg, si->src_reg,
10874 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg,
10879 *insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
10888 si->dst_reg, si->src_reg,
10890 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->dst_reg,
10893 *insn++ = BPF_ALU32_IMM(BPF_LSH, si->dst_reg, 16);
10902 si->dst_reg, si->src_reg,
10904 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->dst_reg,
10910 si->dst_reg, si->src_reg,
10916 si->dst_reg, si->src_reg,
11325 si->dst_reg, si->src_reg, \
11513 *insn++ = BPF_LDX_MEM(BPF_SIZEOF(void *), si->dst_reg, si->src_reg,
11518 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->src_reg,
11524 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->src_reg,
11530 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
11536 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,
11548 *insn++ = BPF_LDX_MEM(BPF_SIZEOF(void *), si->dst_reg, si->src_reg,
11550 *insn++ = BPF_JMP_IMM(BPF_JEQ, si->dst_reg, 0, 1);
11551 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg, off);
11553 *insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
11564 *insn++ = BPF_LDX_MEM(BPF_SIZEOF(void *), si->dst_reg, si->src_reg,
11566 *insn++ = BPF_JMP_IMM(BPF_JEQ, si->dst_reg, 0, 1);
11567 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->dst_reg, off);
11569 *insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
11574 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->src_reg,
11581 *insn++ = BPF_MOV32_IMM(si->dst_reg, 0);
11585 *insn++ = BPF_LDX_MEM(BPF_H, si->dst_reg, si->src_reg,
11591 *insn++ = BPF_LDX_MEM(BPF_W, si->dst_reg, si->src_reg,