162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 262306a36Sopenharmony_ci#ifndef _UAPI__LINUX_BPF_COMMON_H__ 362306a36Sopenharmony_ci#define _UAPI__LINUX_BPF_COMMON_H__ 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci/* Instruction classes */ 662306a36Sopenharmony_ci#define BPF_CLASS(code) ((code) & 0x07) 762306a36Sopenharmony_ci#define BPF_LD 0x00 862306a36Sopenharmony_ci#define BPF_LDX 0x01 962306a36Sopenharmony_ci#define BPF_ST 0x02 1062306a36Sopenharmony_ci#define BPF_STX 0x03 1162306a36Sopenharmony_ci#define BPF_ALU 0x04 1262306a36Sopenharmony_ci#define BPF_JMP 0x05 1362306a36Sopenharmony_ci#define BPF_RET 0x06 1462306a36Sopenharmony_ci#define BPF_MISC 0x07 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci/* ld/ldx fields */ 1762306a36Sopenharmony_ci#define BPF_SIZE(code) ((code) & 0x18) 1862306a36Sopenharmony_ci#define BPF_W 0x00 /* 32-bit */ 1962306a36Sopenharmony_ci#define BPF_H 0x08 /* 16-bit */ 2062306a36Sopenharmony_ci#define BPF_B 0x10 /* 8-bit */ 2162306a36Sopenharmony_ci/* eBPF BPF_DW 0x18 64-bit */ 2262306a36Sopenharmony_ci#define BPF_MODE(code) ((code) & 0xe0) 2362306a36Sopenharmony_ci#define BPF_IMM 0x00 2462306a36Sopenharmony_ci#define BPF_ABS 0x20 2562306a36Sopenharmony_ci#define BPF_IND 0x40 2662306a36Sopenharmony_ci#define BPF_MEM 0x60 2762306a36Sopenharmony_ci#define BPF_LEN 0x80 2862306a36Sopenharmony_ci#define BPF_MSH 0xa0 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci/* alu/jmp fields */ 3162306a36Sopenharmony_ci#define BPF_OP(code) ((code) & 0xf0) 3262306a36Sopenharmony_ci#define BPF_ADD 0x00 3362306a36Sopenharmony_ci#define BPF_SUB 0x10 3462306a36Sopenharmony_ci#define BPF_MUL 0x20 3562306a36Sopenharmony_ci#define BPF_DIV 0x30 3662306a36Sopenharmony_ci#define BPF_OR 0x40 3762306a36Sopenharmony_ci#define BPF_AND 0x50 3862306a36Sopenharmony_ci#define BPF_LSH 0x60 3962306a36Sopenharmony_ci#define BPF_RSH 0x70 4062306a36Sopenharmony_ci#define BPF_NEG 0x80 4162306a36Sopenharmony_ci#define BPF_MOD 0x90 4262306a36Sopenharmony_ci#define BPF_XOR 0xa0 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci#define BPF_JA 0x00 4562306a36Sopenharmony_ci#define BPF_JEQ 0x10 4662306a36Sopenharmony_ci#define BPF_JGT 0x20 4762306a36Sopenharmony_ci#define BPF_JGE 0x30 4862306a36Sopenharmony_ci#define BPF_JSET 0x40 4962306a36Sopenharmony_ci#define BPF_SRC(code) ((code) & 0x08) 5062306a36Sopenharmony_ci#define BPF_K 0x00 5162306a36Sopenharmony_ci#define BPF_X 0x08 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci#ifndef BPF_MAXINSNS 5462306a36Sopenharmony_ci#define BPF_MAXINSNS 4096 5562306a36Sopenharmony_ci#endif 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci#endif /* _UAPI__LINUX_BPF_COMMON_H__ */ 58