Skip to content

Commit

Permalink
bpf, docs: Add explanation of endianness
Browse files Browse the repository at this point in the history
Document the discussion from the email thread on the IETF bpf list,
where it was explained that the raw format varies by endianness
of the processor.

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
Acked-by: David Vernet <void@manifault.com>
Link: https://lore.kernel.org/r/20230220223742.1347-1-dthaler1968@googlemail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
  • Loading branch information
dthaler authored and Alexei Starovoitov committed Feb 22, 2023
1 parent 9fa0289 commit 746ce76
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions Documentation/bpf/instruction-set.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,9 @@ eBPF has two instruction encodings:
* the wide instruction encoding, which appends a second 64-bit immediate (i.e.,
constant) value after the basic instruction for a total of 128 bits.

The basic instruction encoding is as follows, where MSB and LSB mean the most significant
bits and least significant bits, respectively:
The basic instruction encoding looks as follows for a little-endian processor,
where MSB and LSB mean the most significant bits and least significant bits,
respectively:

============= ======= ======= ======= ============
32 bits (MSB) 16 bits 4 bits 4 bits 8 bits (LSB)
Expand All @@ -63,6 +64,17 @@ imm offset src_reg dst_reg opcode
**opcode**
operation to perform

and as follows for a big-endian processor:

============= ======= ======= ======= ============
32 bits (MSB) 16 bits 4 bits 4 bits 8 bits (LSB)
============= ======= ======= ======= ============
imm offset dst_reg src_reg opcode
============= ======= ======= ======= ============

Multi-byte fields ('imm' and 'offset') are similarly stored in
the byte order of the processor.

Note that most instructions do not use all of the fields.
Unused fields shall be cleared to zero.

Expand Down

0 comments on commit 746ce76

Please sign in to comment.