1 .. contents:: 1 .. contents:: 2 .. sectnum:: 2 .. sectnum:: 3 3 4 ============================================== 4 =================================================== 5 BPF ABI Recommended Conventions and Guidelines 5 BPF ABI Recommended Conventions and Guidelines v1.0 6 ============================================== 6 =================================================== 7 7 8 This is version 1.0 of an informational docume 8 This is version 1.0 of an informational document containing recommended 9 conventions and guidelines for producing porta 9 conventions and guidelines for producing portable BPF program binaries. 10 10 11 Registers and calling convention 11 Registers and calling convention 12 ================================ 12 ================================ 13 13 14 BPF has 10 general purpose registers and a rea 14 BPF has 10 general purpose registers and a read-only frame pointer register, 15 all of which are 64-bits wide. 15 all of which are 64-bits wide. 16 16 17 The BPF calling convention is defined as: 17 The BPF calling convention is defined as: 18 18 19 * R0: return value from function calls, and ex 19 * R0: return value from function calls, and exit value for BPF programs 20 * R1 - R5: arguments for function calls 20 * R1 - R5: arguments for function calls 21 * R6 - R9: callee saved registers that functio 21 * R6 - R9: callee saved registers that function calls will preserve 22 * R10: read-only frame pointer to access stack 22 * R10: read-only frame pointer to access stack 23 23 24 R0 - R5 are scratch registers and BPF programs 24 R0 - R5 are scratch registers and BPF programs needs to spill/fill them if 25 necessary across calls. 25 necessary across calls. 26 << 27 The BPF program needs to store the return valu << 28 ``EXIT``. <<
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.