Commit 9e533e22 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Alexei Starovoitov

bpf, docs: Fully document the JMP opcodes

Add pseudo-code to document all the different BPF_JMP / BPF_JMP64
opcodes.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20220103183556.41040-6-hch@lst.de
parent 03c517ee
...@@ -125,24 +125,24 @@ BPF_JMP32 uses 32-bit wide operands while BPF_JMP uses 64-bit wide operands for ...@@ -125,24 +125,24 @@ BPF_JMP32 uses 32-bit wide operands while BPF_JMP uses 64-bit wide operands for
otherwise identical operations. otherwise identical operations.
The code field encodes the operation as below: The code field encodes the operation as below:
======== ===== ========================= ======== ===== ========================= ============
code value description code value description notes
======== ===== ========================= ======== ===== ========================= ============
BPF_JA 0x00 BPF_JMP only BPF_JA 0x00 PC += off BPF_JMP only
BPF_JEQ 0x10 BPF_JEQ 0x10 PC += off if dst == src
BPF_JGT 0x20 BPF_JGT 0x20 PC += off if dst > src unsigned
BPF_JGE 0x30 BPF_JGE 0x30 PC += off if dst >= src unsigned
BPF_JSET 0x40 BPF_JSET 0x40 PC += off if dst & src
BPF_JNE 0x50 jump '!=' BPF_JNE 0x50 PC += off if dst != src
BPF_JSGT 0x60 signed '>' BPF_JSGT 0x60 PC += off if dst > src signed
BPF_JSGE 0x70 signed '>=' BPF_JSGE 0x70 PC += off if dst >= src signed
BPF_CALL 0x80 function call BPF_CALL 0x80 function call
BPF_EXIT 0x90 function return BPF_EXIT 0x90 function / program return BPF_JMP only
BPF_JLT 0xa0 unsigned '<' BPF_JLT 0xa0 PC += off if dst < src unsigned
BPF_JLE 0xb0 unsigned '<=' BPF_JLE 0xb0 PC += off if dst <= src unsigned
BPF_JSLT 0xc0 signed '<' BPF_JSLT 0xc0 PC += off if dst < src signed
BPF_JSLE 0xd0 signed '<=' BPF_JSLE 0xd0 PC += off if dst <= src signed
======== ===== ========================= ======== ===== ========================= ============
The eBPF program needs to store the return value into register R0 before doing a The eBPF program needs to store the return value into register R0 before doing a
BPF_EXIT. BPF_EXIT.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment