mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Add brief text about existence of helper functions, with details to go in separate psABI text. Note that text about runtime functions (kfuncs) is part of a separate patch, not this one. Signed-off-by: Dave Thaler <dthaler@microsoft.com> Link: https://lore.kernel.org/r/20230308205303.1308-1-dthaler1968@googlemail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			36 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``.
 |