mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
4652072e7b
As discussed at LSF/MM/BPF, the sentence about using R0 for returning values from calls is part of the calling convention and belongs in abi.rst. Any further additions or clarifications to this text are left for future patches on abi.rst. The current patch is simply to unblock progression of instruction-set.rst to a standard. In contrast, the restriction of register numbers to the range 0-10 is untouched, left in the instruction-set.rst definition of the src_reg and dst_reg fields. Signed-off-by: Dave Thaler <dthaler1968@googlemail.com> Link: https://lore.kernel.org/r/20240517153445.3914-1-dthaler1968@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
29 lines
968 B
ReStructuredText
29 lines
968 B
ReStructuredText
.. contents::
|
|
.. sectnum::
|
|
|
|
===================================================
|
|
BPF ABI Recommended Conventions and Guidelines v1.0
|
|
===================================================
|
|
|
|
This is version 1.0 of an informational document containing recommended
|
|
conventions and guidelines for producing portable BPF program binaries.
|
|
|
|
Registers and calling convention
|
|
================================
|
|
|
|
BPF has 10 general purpose registers and a read-only frame pointer register,
|
|
all of which are 64-bits wide.
|
|
|
|
The BPF calling convention is defined as:
|
|
|
|
* R0: return value from function calls, and exit value for BPF programs
|
|
* R1 - R5: arguments for function calls
|
|
* R6 - R9: callee saved registers that function calls will preserve
|
|
* R10: read-only frame pointer to access stack
|
|
|
|
R0 - R5 are scratch registers and BPF programs needs to spill/fill them if
|
|
necessary across calls.
|
|
|
|
The BPF program needs to store the return value into register R0 before doing an
|
|
``EXIT``.
|