Skip to content

Commit

Permalink
bpf, docs: Add abi.rst document to standardization subdirectory
Browse files Browse the repository at this point in the history
As specified in the IETF BPF charter, the BPF working group has plans to
add one or more informational documents that recommend conventions and
guidelines for producing portable BPF program binaries. The
instruction-set.rst document currently contains a "Registers and calling
convention" subsection which dictates a calling convention that belongs
in an ABI document, rather than an instruction set document. Let's move
it to a new abi.rst document so we can clean it up. The abi.rst document
will of course be significantly changed and expanded upon over time. For
now, it's really just a placeholder which will contain ABI-specific
language that doesn't belong in other documents.

Signed-off-by: David Vernet <void@manifault.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20230828155948.123405-3-void@manifault.com
  • Loading branch information
David Vernet authored and Daniel Borkmann committed Aug 30, 2023
1 parent aee1720 commit deb8840
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 16 deletions.
25 changes: 25 additions & 0 deletions Documentation/bpf/standardization/abi.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
.. 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.
1 change: 1 addition & 0 deletions Documentation/bpf/standardization/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ for the working group charter, documents, and more.
:maxdepth: 1

instruction-set
abi

.. Links:
.. _IETF BPF Working Group: https://datatracker.ietf.org/wg/bpf/about/
16 changes: 0 additions & 16 deletions Documentation/bpf/standardization/instruction-set.rst
Original file line number Diff line number Diff line change
Expand Up @@ -97,22 +97,6 @@ Definitions
A: 10000110
B: 11111111 10000110

Registers and calling convention
================================

eBPF has 10 general purpose registers and a read-only frame pointer register,
all of which are 64-bits wide.

The eBPF calling convention is defined as:

* R0: return value from function calls, and exit value for eBPF 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 eBPF programs needs to spill/fill them if
necessary across calls.

Instruction encoding
====================

Expand Down

0 comments on commit deb8840

Please sign in to comment.