On Tue, Sep 27, 2022 at 06:59:58PM +0000, dthaler1968@xxxxxxxxxxxxxx wrote: > From: Dave Thaler <dthaler@xxxxxxxxxxxxx> > > Signed-off-by: Dave Thaler <dthaler@xxxxxxxxxxxxx> > --- > Documentation/bpf/clang-notes.rst | 5 +++++ > Documentation/bpf/instruction-set.rst | 3 +++ > 2 files changed, 8 insertions(+) > > diff --git a/Documentation/bpf/clang-notes.rst b/Documentation/bpf/clang-notes.rst > index 528feddf2..3c934421b 100644 > --- a/Documentation/bpf/clang-notes.rst > +++ b/Documentation/bpf/clang-notes.rst > @@ -20,6 +20,11 @@ Arithmetic instructions > For CPU versions prior to 3, Clang v7.0 and later can enable ``BPF_ALU`` support with > ``-Xclang -target-feature -Xclang +alu32``. In CPU version 3, support is automatically included. > > +Invalid instructions > +==================== > + > +Clang will generate the invalid ``BPF_CALL | BPF_X | BPF_JMP`` (0x8d) instruction if ``-O0`` is used. I wouldn't call it invalid and it's not related to -O0. It's a "reserved" instruction. When we support indirect jumps that's what it would be. > + > Atomic operations > ================= > > diff --git a/Documentation/bpf/instruction-set.rst b/Documentation/bpf/instruction-set.rst > index 2ac8f0dae..af9dc0cc6 100644 > --- a/Documentation/bpf/instruction-set.rst > +++ b/Documentation/bpf/instruction-set.rst > @@ -303,6 +303,9 @@ with the remaining registers being ignored. The definition of a helper function > is responsible for specifying the type (e.g., integer, pointer, etc.) of the value returned, > the number of arguments, and the type of each argument. > > +Note that ``BPF_CALL | BPF_X | BPF_JMP`` (0x8d), where the helper function integer > +would be read from a specified register, is not currently permitted. I would say: Note that ``BPF_CALL | BPF_X | BPF_JMP`` instruction is reserved and currently not permitted. > + > Runtime functions > ~~~~~~~~~~~~~~~~~ > Runtime functions are like helper functions except that they are not specific > -- > 2.33.4 >