| /linux/tools/testing/selftests/bpf/verifier/ |
| H A D | atomic_fetch.c | 10 BPF_ATOMIC_OP(BPF_DW, BPF_AND | BPF_FETCH, BPF_REG_2, BPF_REG_1, 0), 34 BPF_ATOMIC_OP(BPF_DW, BPF_AND | BPF_FETCH, BPF_REG_2, BPF_REG_1, 0), 58 BPF_ATOMIC_OP(BPF_W, BPF_AND | BPF_FETCH, BPF_REG_2, BPF_REG_1, 0), 81 BPF_ATOMIC_OP(BPF_W, BPF_AND | BPF_FETCH, BPF_REG_2, BPF_REG_1, 0), 121 __ATOMIC_FETCH_OP_TEST(BPF_REG_1, BPF_REG_2, 1, BPF_ADD | BPF_FETCH, 2, 3), 122 __ATOMIC_FETCH_OP_TEST(BPF_REG_0, BPF_REG_1, 1, BPF_ADD | BPF_FETCH, 2, 3), 123 __ATOMIC_FETCH_OP_TEST(BPF_REG_1, BPF_REG_0, 1, BPF_ADD | BPF_FETCH, 2, 3), 124 __ATOMIC_FETCH_OP_TEST(BPF_REG_2, BPF_REG_3, 1, BPF_ADD | BPF_FETCH, 2, 3), 125 __ATOMIC_FETCH_OP_TEST(BPF_REG_4, BPF_REG_5, 1, BPF_ADD | BPF_FETCH, 2, 3), 126 __ATOMIC_FETCH_OP_TEST(BPF_REG_9, BPF_REG_8, 1, BPF_ADD | BPF_FETCH, 2, 3), [all …]
|
| H A D | atomic_invalid.c | 15 __INVALID_ATOMIC_ACCESS_TEST(BPF_ADD | BPF_FETCH), 17 __INVALID_ATOMIC_ACCESS_TEST(BPF_ADD | BPF_FETCH), 19 __INVALID_ATOMIC_ACCESS_TEST(BPF_AND | BPF_FETCH), 21 __INVALID_ATOMIC_ACCESS_TEST(BPF_OR | BPF_FETCH), 23 __INVALID_ATOMIC_ACCESS_TEST(BPF_XOR | BPF_FETCH),
|
| H A D | atomic_fetch_add.c | 9 BPF_ATOMIC_OP(BPF_DW, BPF_ADD | BPF_FETCH, BPF_REG_10, BPF_REG_1, -8), 31 BPF_ATOMIC_OP(BPF_W, BPF_ADD | BPF_FETCH, BPF_REG_10, BPF_REG_1, -4), 50 BPF_ATOMIC_OP(BPF_DW, BPF_ADD | BPF_FETCH, BPF_REG_10, BPF_REG_10, -8), 62 BPF_ATOMIC_OP(BPF_DW, BPF_ADD | BPF_FETCH, BPF_REG_10, BPF_REG_2, -8), 75 BPF_ATOMIC_OP(BPF_DW, BPF_ADD | BPF_FETCH, BPF_REG_2, BPF_REG_0, -8), 96 BPF_ATOMIC_OP(BPF_DW, BPF_ADD | BPF_FETCH, BPF_REG_2, BPF_REG_3, 0),
|
| H A D | atomic_or.c | 30 BPF_ATOMIC_OP(BPF_DW, BPF_OR | BPF_FETCH, BPF_REG_10, BPF_REG_1, -8), 60 BPF_ATOMIC_OP(BPF_W, BPF_OR | BPF_FETCH, BPF_REG_10, BPF_REG_1, -4), 88 BPF_ATOMIC_OP(BPF_W, BPF_OR | BPF_FETCH, BPF_REG_10, BPF_REG_1, -8),
|
| H A D | atomic_and.c | 30 BPF_ATOMIC_OP(BPF_DW, BPF_AND | BPF_FETCH, BPF_REG_10, BPF_REG_1, -8), 60 BPF_ATOMIC_OP(BPF_W, BPF_AND | BPF_FETCH, BPF_REG_10, BPF_REG_1, -4), 85 BPF_ATOMIC_OP(BPF_DW, BPF_AND | BPF_FETCH, BPF_REG_10, BPF_REG_0, -8),
|
| H A D | atomic_xor.c | 30 BPF_ATOMIC_OP(BPF_DW, BPF_XOR | BPF_FETCH, BPF_REG_10, BPF_REG_1, -8), 60 BPF_ATOMIC_OP(BPF_W, BPF_XOR | BPF_FETCH, BPF_REG_10, BPF_REG_1, -4),
|
| H A D | atomic_bounds.c | 18 BPF_ATOMIC_OP(BPF_DW, BPF_ADD | BPF_FETCH, BPF_REG_10, BPF_REG_1, -8),
|
| /linux/tools/testing/selftests/bpf/progs/ |
| H A D | verifier_precision.c | 333 BPF_ATOMIC_OP(BPF_DW, BPF_ADD | BPF_FETCH, BPF_REG_10, BPF_REG_2, -8)) in bpf_atomic_fetch_add_precision() 381 BPF_ATOMIC_OP(BPF_DW, BPF_OR | BPF_FETCH, BPF_REG_10, BPF_REG_2, -8)) in bpf_atomic_fetch_or_precision() 405 BPF_ATOMIC_OP(BPF_DW, BPF_AND | BPF_FETCH, BPF_REG_10, BPF_REG_2, -8)) in bpf_atomic_fetch_and_precision() 429 BPF_ATOMIC_OP(BPF_DW, BPF_XOR | BPF_FETCH, BPF_REG_10, BPF_REG_2, -8)) in bpf_atomic_fetch_xor_precision() 489 BPF_ATOMIC_OP(BPF_DW, BPF_ADD | BPF_FETCH, BPF_REG_10, BPF_REG_2, -8)) in bpf_atomic_fetch_add_dual_precision() 549 BPF_ATOMIC_OP(BPF_DW, BPF_ADD | BPF_FETCH, BPF_REG_0, BPF_REG_1, 0)) in bpf_atomic_fetch_add_map_precision() 611 BPF_ATOMIC_OP(BPF_W, BPF_ADD | BPF_FETCH, BPF_REG_0, BPF_REG_1, 0)) in bpf_atomic_fetch_add_32bit_precision()
|
| H A D | verifier_zext.c | 131 BPF_ATOMIC_OP(BPF_W, BPF_ADD | BPF_FETCH, BPF_REG_10, BPF_REG_1, -8)) in zext_atomic_fetch32_hi_used()
|
| /linux/arch/mips/net/ |
| H A D | bpf_jit_comp32.c | 813 case BPF_ADD | BPF_FETCH: in emit_atomic_r64() 819 case BPF_SUB | BPF_FETCH: in emit_atomic_r64() 825 case BPF_OR | BPF_FETCH: in emit_atomic_r64() 831 case BPF_AND | BPF_FETCH: in emit_atomic_r64() 837 case BPF_XOR | BPF_FETCH: in emit_atomic_r64() 849 if (code & BPF_FETCH) { in emit_atomic_r64() 894 case BPF_ADD | BPF_FETCH: in emit_cmpxchg_r32() 900 case BPF_SUB | BPF_FETCH: in emit_cmpxchg_r32() 906 case BPF_OR | BPF_FETCH: in emit_cmpxchg_r32() 912 case BPF_AND | BPF_FETCH in emit_cmpxchg_r64() [all...] |
| H A D | bpf_jit_comp64.c | 467 case BPF_ADD | BPF_FETCH: in emit_call() 471 case BPF_AND | BPF_FETCH: in emit_call() 475 case BPF_OR | BPF_FETCH: 479 case BPF_XOR | BPF_FETCH: in emit_tail_call() 490 if (code & BPF_FETCH) { in emit_tail_call() 932 case BPF_ADD | BPF_FETCH: in build_insn() 934 case BPF_AND | BPF_FETCH: in build_insn() 936 case BPF_OR | BPF_FETCH: in build_insn() 938 case BPF_XOR | BPF_FETCH: in build_insn() 942 } else if (imm & BPF_FETCH) { in build_insn() [all...] |
| /linux/tools/testing/selftests/bpf/ |
| H A D | disasm.c | 252 (insn->imm == (BPF_ADD | BPF_FETCH) || in print_bpf_insn() 253 insn->imm == (BPF_AND | BPF_FETCH) || in print_bpf_insn() 254 insn->imm == (BPF_OR | BPF_FETCH) || in print_bpf_insn() 255 insn->imm == (BPF_XOR | BPF_FETCH))) { in print_bpf_insn()
|
| /linux/kernel/bpf/ |
| H A D | disasm.c | 252 (insn->imm == (BPF_ADD | BPF_FETCH) || in print_bpf_insn() 253 insn->imm == (BPF_AND | BPF_FETCH) || in print_bpf_insn() 254 insn->imm == (BPF_OR | BPF_FETCH) || in print_bpf_insn() 255 insn->imm == (BPF_XOR | BPF_FETCH))) { in print_bpf_insn()
|
| H A D | backtrack.c | 74 (insn->imm & BPF_FETCH);
|
| H A D | liveness.c | 1488 /* BPF_XCHG, BPF_CMPXCHG or BPF_{ADD,AND,OR,XOR} | [BPF_FETCH] */ in find_callback_subprog() 2571 if (insn->imm & BPF_FETCH)
|
| /linux/Documentation/bpf/ |
| H A D | clang-notes.rst | 37 Clang can generate is ``BPF_ADD`` *without* ``BPF_FETCH``. If you need to enable
|
| /linux/arch/arm64/net/ |
| H A D | bpf_jit_comp.c | 832 case BPF_ADD | BPF_FETCH: in emit_lse_atomic() 835 case BPF_AND | BPF_FETCH: in emit_lse_atomic() 839 case BPF_OR | BPF_FETCH: in emit_lse_atomic() 842 case BPF_XOR | BPF_FETCH: in emit_lse_atomic() 903 } else if (imm == (BPF_ADD | BPF_FETCH) || in emit_ll_sc_atomic() 904 imm == (BPF_AND | BPF_FETCH) || in emit_ll_sc_atomic() 905 imm == (BPF_OR | BPF_FETCH) || in emit_ll_sc_atomic() 906 imm == (BPF_XOR | BPF_FETCH)) { in emit_ll_sc_atomic() 912 if (imm == (BPF_ADD | BPF_FETCH)) in emit_ll_sc_atomic() 914 else if (imm == (BPF_AND | BPF_FETCH)) in emit_ll_sc_atomic() [all...] |
| /linux/arch/s390/net/ |
| H A D | bpf_jit_comp.c | 785 * A read-modify-write carrying BPF_FETCH reads the old value into in bpf_jit_probe_atomic_pre() 1646 (insn->imm & BPF_FETCH) ? src_reg : REG_W0, \ in bpf_jit_insn() 1651 if (insn->imm & BPF_FETCH) { \ in bpf_jit_insn() 1659 case BPF_ADD | BPF_FETCH: in bpf_jit_insn() 1664 case BPF_AND | BPF_FETCH: in bpf_jit_insn() 1669 case BPF_OR | BPF_FETCH: in bpf_jit_insn() 1674 case BPF_XOR | BPF_FETCH: in bpf_jit_insn()
|
| /linux/arch/riscv/net/ |
| H A D | bpf_jit_comp32.c | 882 bool is_fetch = (imm & BPF_FETCH) || (imm == BPF_XCHG); in emit_bpf_atomic() 889 case BPF_ADD | BPF_FETCH: in emit_bpf_atomic() 893 case BPF_AND | BPF_FETCH: in emit_bpf_atomic() 897 case BPF_OR | BPF_FETCH: in emit_bpf_atomic() 901 case BPF_XOR | BPF_FETCH: in emit_bpf_atomic()
|
| H A D | bpf_jit_comp64.c | 667 case BPF_ADD | BPF_FETCH: in emit_atomic_rmw() 675 case BPF_AND | BPF_FETCH: in emit_atomic_rmw() 683 case BPF_OR | BPF_FETCH: 691 case BPF_XOR | BPF_FETCH: in sign_extend() 2102 * carrying BPF_FETCH reads the old value into src_reg, or into in bpf_jit_build_prologue()
|
| /linux/arch/x86/net/ |
| H A D | bpf_jit_comp.c | 245 return insn->imm == (BPF_AND | BPF_FETCH) || in is_axreg() 246 insn->imm == (BPF_OR | BPF_FETCH) || in is_axreg() 247 insn->imm == (BPF_XOR | BPF_FETCH); in is_axreg() 1660 case BPF_ADD | BPF_FETCH: in emit_spectre_bhb_barrier() 1713 case BPF_ADD | BPF_FETCH: in emit_kfunc_arena_args() 3206 * except for a read-modify-write with BPF_FETCH, in restore_regs()
|
| /linux/tools/include/uapi/linux/ |
| H A D | bpf.h | 50 #define BPF_FETCH 0x01 /* not an opcode on its own, used to build others */ macro 51 #define BPF_XCHG (0xe0 | BPF_FETCH) /* atomic exchange */ 52 #define BPF_CMPXCHG (0xf0 | BPF_FETCH) /* atomic compare-and-write */
|
| /linux/include/uapi/linux/ |
| H A D | bpf.h | 50 #define BPF_FETCH 0x01 /* not an opcode on its own, used to build others */ macro 51 #define BPF_XCHG (0xe0 | BPF_FETCH) /* atomic exchange */ 52 #define BPF_CMPXCHG (0xf0 | BPF_FETCH) /* atomic compare-and-write */
|
| /linux/arch/loongarch/net/ |
| H A D | bpf_jit.c | 407 case BPF_ADD | BPF_FETCH: in emit_atomic_rmw() 434 case BPF_AND | BPF_FETCH: in emit_atomic_rmw() 442 case BPF_OR | BPF_FETCH: in emit_atomic_rmw() 450 case BPF_XOR | BPF_FETCH: in emit_atomic_rmw()
|
| /linux/include/linux/ |
| H A D | filter.h | 393 * BPF_ADD | BPF_FETCH src_reg = atomic_fetch_add(dst_reg + off16, src_reg); in bpf_atomic_is_load_store() 394 * BPF_AND | BPF_FETCH src_reg = atomic_fetch_and(dst_reg + off16, src_reg); in bpf_atomic_is_load_store() 395 * BPF_OR | BPF_FETCH src_reg = atomic_fetch_or(dst_reg + off16, src_reg); in bpf_atomic_is_load_store() 396 * BPF_XOR | BPF_FETCH src_reg = atomic_fetch_xor(dst_reg + off16, src_reg); in bpf_atomic_is_load_store() 465 return (insn->imm & BPF_FETCH) ? insn->src_reg : -1;
|