lkml.org 
[lkml]   [2020]   [Nov]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2 bpf-next 08/13] bpf: Add instructions for atomic_[cmp]xchg
    On Fri, Nov 27, 2020 at 05:57:33PM +0000, Brendan Jackman wrote:
    >
    > /* atomic op type fields (stored in immediate) */
    > -#define BPF_FETCH 0x01 /* fetch previous value into src reg */
    > +#define BPF_XCHG (0xe0 | BPF_FETCH) /* atomic exchange */
    > +#define BPF_CMPXCHG (0xf0 | BPF_FETCH) /* atomic compare-and-write */
    > +#define BPF_FETCH 0x01 /* fetch previous value into src reg or r0*/

    I think such comment is more confusing than helpful.
    I'd just say that the fetch bit is not valid on its own.
    It's used to build other instructions like cmpxchg and atomic_fetch_add.

    > + } else if (BPF_MODE(insn->code) == BPF_ATOMIC &&
    > + insn->imm == (BPF_CMPXCHG)) {

    redundant ().

    > + verbose(cbs->private_data, "(%02x) r0 = atomic%s_cmpxchg(*(%s *)(r%d %+d), r0, r%d)\n",
    > + insn->code,
    > + BPF_SIZE(insn->code) == BPF_DW ? "64" : "",
    > + bpf_ldst_string[BPF_SIZE(insn->code) >> 3],
    > + insn->dst_reg, insn->off,
    > + insn->src_reg);
    > + } else if (BPF_MODE(insn->code) == BPF_ATOMIC &&
    > + insn->imm == (BPF_XCHG)) {

    redundant ().

    \
     
     \ /
      Last update: 2020-11-29 02:31    [W:3.103 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site