BPF_CMPXCHG
case BPF_CMPXCHG:
} else if (imm == BPF_CMPXCHG) {
case BPF_CMPXCHG:
case BPF_CMPXCHG:
case BPF_CMPXCHG:
case BPF_CMPXCHG:
case BPF_CMPXCHG:
case BPF_CMPXCHG:
if (size != BPF_DW && imm == BPF_CMPXCHG &&
if (insn->imm == BPF_CMPXCHG)
case BPF_CMPXCHG:
case BPF_CMPXCHG:
case BPF_CMPXCHG:
case BPF_CMPXCHG:
err = emit_atomic_rmw(&prog, BPF_CMPXCHG,
load_reg = insn->imm == BPF_CMPXCHG ?
if (insn->imm == BPF_CMPXCHG)
case BPF_CMPXCHG:
insn->imm == BPF_CMPXCHG) {
insn->imm == BPF_CMPXCHG;
if (insn->imm == BPF_CMPXCHG)
if (insn->imm == BPF_CMPXCHG)
case BPF_CMPXCHG:
if (insn->imm == BPF_CMPXCHG) {
if (insn->imm == BPF_CMPXCHG)
case BPF_CMPXCHG:
(op) == BPF_CMPXCHG ? 0 : \
BPF_TEST_CLOBBER_ATOMIC(BPF_DW, BPF_CMPXCHG),
BPF_TEST_CLOBBER_ATOMIC(BPF_W, BPF_CMPXCHG),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R1, -4),
insns[i++] = BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, R10, R2, -8);
insns[i++] = BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, R10, R2, -8);
insns[i++] = BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R2, -4);
insns[i++] = BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R2, -4);
case BPF_CMPXCHG:
if (op == BPF_CMPXCHG && width == BPF_W)
if (op == BPF_CMPXCHG)
if (rs == R0 && op == BPF_CMPXCHG)
else if (rs == rd && (op == BPF_CMPXCHG ||
else if (op == BPF_CMPXCHG)
if (!(rd == R0 && op == BPF_CMPXCHG) &&
} else if (op == BPF_CMPXCHG) { /* Aliased, CMPXCHG */
return __bpf_fill_atomic_reg_pairs(self, BPF_DW, BPF_CMPXCHG);
return __bpf_fill_atomic_reg_pairs(self, BPF_W, BPF_CMPXCHG);
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R3, -40),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R3, -40),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R3, -40),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R3, -40),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R3, -40),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, R10, R3, -40),
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, R10, R2, -40),
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, R10, R2, -40),
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, R10, R2, -40),
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, R10, R2, -40),
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, R10, R2, -40),
insn->imm == BPF_CMPXCHG) {
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, BPF_REG_10, BPF_REG_2, -8))
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, BPF_REG_10, BPF_REG_2, -8))
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, BPF_REG_6, BPF_REG_1, 0))
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, BPF_REG_6, BPF_REG_1, 0))
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, BPF_REG_10, BPF_REG_1, -8),
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, BPF_REG_10, BPF_REG_1, -8),
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, BPF_REG_10, BPF_REG_5, -8),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, BPF_REG_10, BPF_REG_5, -8),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, BPF_REG_10, BPF_REG_5, -8),
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, BPF_REG_10, BPF_REG_1, -8),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, BPF_REG_10, BPF_REG_5, -8),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, BPF_REG_10, BPF_REG_1, -4),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, BPF_REG_10, BPF_REG_1, -4),
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, BPF_REG_10, BPF_REG_2, -8),
BPF_ATOMIC_OP(BPF_DW, BPF_CMPXCHG, BPF_REG_10, BPF_REG_1, -8),
BPF_ATOMIC_OP(BPF_W, BPF_CMPXCHG, BPF_REG_10, BPF_REG_1, -8),
__INVALID_ATOMIC_ACCESS_TEST(BPF_CMPXCHG),