1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*4882a593Smuzhiyun #ifndef _UAPI__LINUX_BPF_COMMON_H__ 3*4882a593Smuzhiyun #define _UAPI__LINUX_BPF_COMMON_H__ 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun /* Instruction classes */ 6*4882a593Smuzhiyun #define BPF_CLASS(code) ((code) & 0x07) 7*4882a593Smuzhiyun #define BPF_LD 0x00 8*4882a593Smuzhiyun #define BPF_LDX 0x01 9*4882a593Smuzhiyun #define BPF_ST 0x02 10*4882a593Smuzhiyun #define BPF_STX 0x03 11*4882a593Smuzhiyun #define BPF_ALU 0x04 12*4882a593Smuzhiyun #define BPF_JMP 0x05 13*4882a593Smuzhiyun #define BPF_RET 0x06 14*4882a593Smuzhiyun #define BPF_MISC 0x07 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun /* ld/ldx fields */ 17*4882a593Smuzhiyun #define BPF_SIZE(code) ((code) & 0x18) 18*4882a593Smuzhiyun #define BPF_W 0x00 /* 32-bit */ 19*4882a593Smuzhiyun #define BPF_H 0x08 /* 16-bit */ 20*4882a593Smuzhiyun #define BPF_B 0x10 /* 8-bit */ 21*4882a593Smuzhiyun /* eBPF BPF_DW 0x18 64-bit */ 22*4882a593Smuzhiyun #define BPF_MODE(code) ((code) & 0xe0) 23*4882a593Smuzhiyun #define BPF_IMM 0x00 24*4882a593Smuzhiyun #define BPF_ABS 0x20 25*4882a593Smuzhiyun #define BPF_IND 0x40 26*4882a593Smuzhiyun #define BPF_MEM 0x60 27*4882a593Smuzhiyun #define BPF_LEN 0x80 28*4882a593Smuzhiyun #define BPF_MSH 0xa0 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun /* alu/jmp fields */ 31*4882a593Smuzhiyun #define BPF_OP(code) ((code) & 0xf0) 32*4882a593Smuzhiyun #define BPF_ADD 0x00 33*4882a593Smuzhiyun #define BPF_SUB 0x10 34*4882a593Smuzhiyun #define BPF_MUL 0x20 35*4882a593Smuzhiyun #define BPF_DIV 0x30 36*4882a593Smuzhiyun #define BPF_OR 0x40 37*4882a593Smuzhiyun #define BPF_AND 0x50 38*4882a593Smuzhiyun #define BPF_LSH 0x60 39*4882a593Smuzhiyun #define BPF_RSH 0x70 40*4882a593Smuzhiyun #define BPF_NEG 0x80 41*4882a593Smuzhiyun #define BPF_MOD 0x90 42*4882a593Smuzhiyun #define BPF_XOR 0xa0 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun #define BPF_JA 0x00 45*4882a593Smuzhiyun #define BPF_JEQ 0x10 46*4882a593Smuzhiyun #define BPF_JGT 0x20 47*4882a593Smuzhiyun #define BPF_JGE 0x30 48*4882a593Smuzhiyun #define BPF_JSET 0x40 49*4882a593Smuzhiyun #define BPF_SRC(code) ((code) & 0x08) 50*4882a593Smuzhiyun #define BPF_K 0x00 51*4882a593Smuzhiyun #define BPF_X 0x08 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #ifndef BPF_MAXINSNS 54*4882a593Smuzhiyun #define BPF_MAXINSNS 4096 55*4882a593Smuzhiyun #endif 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun #endif /* _UAPI__LINUX_BPF_COMMON_H__ */ 58