Link: https://lore.kernel.org/r/20260217200002.683975158@linuxfoundation.org Tested-by: Florian Fainelli <florian.fainelli@broadcom.com> Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com> Tested-by: Peter Schneider <pschneider1968@googlemail.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Salvatore Bonaccorso <carnil@debian.org> Tested-by: Brett A C Sheffield <bacs@librecast.net> Tested-by: Mark Brown <broonie@kernel.org> Tested-by: Luna Jernberg <droidbittin@gmail.com> Tested-by: Ronald Warsow <rwarsow@gmx.de> Tested-by: Justin M. Forbes <jforbes@fedoraproject.org> Tested-by: Ron Economos <re@w6rz.net> Tested-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
37 lines
1.2 KiB
ReStructuredText
37 lines
1.2 KiB
ReStructuredText
.. contents::
|
|
.. sectnum::
|
|
|
|
==========================
|
|
Clang implementation notes
|
|
==========================
|
|
|
|
This document provides more details specific to the Clang/LLVM implementation of the eBPF instruction set.
|
|
|
|
Versions
|
|
========
|
|
|
|
Clang defined "CPU" versions, where a CPU version of 3 corresponds to the current eBPF ISA.
|
|
|
|
Clang can select the eBPF ISA version using ``-mcpu=v3`` for example to select version 3.
|
|
|
|
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.
|
|
|
|
Jump instructions
|
|
=================
|
|
|
|
If ``-O0`` is used, Clang will generate the ``BPF_CALL | BPF_X | BPF_JMP`` (0x8d)
|
|
instruction, which is not supported by the Linux kernel verifier.
|
|
|
|
Atomic operations
|
|
=================
|
|
|
|
Clang can generate atomic instructions by default when ``-mcpu=v3`` is
|
|
enabled. If a lower version for ``-mcpu`` is set, the only atomic instruction
|
|
Clang can generate is ``BPF_ADD`` *without* ``BPF_FETCH``. If you need to enable
|
|
the atomics features, while keeping a lower ``-mcpu`` version, you can use
|
|
``-Xclang -target-feature -Xclang +alu32``.
|