bpf: Add BPF_FETCH field / create atomic_fetch_add instruction
[linux-2.6-microblaze.git] / arch / x86 / net / bpf_jit_comp.c
index b1829a5..eea7d8b 100644 (file)
@@ -811,6 +811,10 @@ static int emit_atomic(u8 **pprog, u8 atomic_op,
                /* lock *(u32/u64*)(dst_reg + off) <op>= src_reg */
                EMIT1(simple_alu_opcodes[atomic_op]);
                break;
+       case BPF_ADD | BPF_FETCH:
+               /* src_reg = atomic_fetch_add(dst_reg + off, src_reg); */
+               EMIT2(0x0F, 0xC1);
+               break;
        default:
                pr_err("bpf_jit: unknown atomic opcode %02x\n", atomic_op);
                return -EFAULT;