xref: /aosp_15_r20/external/elfutils/lib/bpf.h (revision 7304104da70ce23c86437a01be71edd1a2d7f37e)
1*7304104dSAndroid Build Coastguard Worker /* Minimal extended BPF constants as alternative for linux/bpf.h.  */
2*7304104dSAndroid Build Coastguard Worker 
3*7304104dSAndroid Build Coastguard Worker #ifndef _ELFUTILS_BPF_H
4*7304104dSAndroid Build Coastguard Worker #define _ELFUTILS_BPF_H 1
5*7304104dSAndroid Build Coastguard Worker 
6*7304104dSAndroid Build Coastguard Worker #include <stdint.h>
7*7304104dSAndroid Build Coastguard Worker 
8*7304104dSAndroid Build Coastguard Worker #define BPF_CLASS(code) ((code) & 0x07)
9*7304104dSAndroid Build Coastguard Worker 
10*7304104dSAndroid Build Coastguard Worker #define BPF_LD    0x00
11*7304104dSAndroid Build Coastguard Worker #define BPF_LDX   0x01
12*7304104dSAndroid Build Coastguard Worker #define BPF_ST    0x02
13*7304104dSAndroid Build Coastguard Worker #define BPF_STX   0x03
14*7304104dSAndroid Build Coastguard Worker #define BPF_ALU   0x04
15*7304104dSAndroid Build Coastguard Worker #define BPF_JMP   0x05
16*7304104dSAndroid Build Coastguard Worker #define BPF_RET   0x06
17*7304104dSAndroid Build Coastguard Worker #define BPF_MISC  0x07
18*7304104dSAndroid Build Coastguard Worker 
19*7304104dSAndroid Build Coastguard Worker #define BPF_ALU64 0x07
20*7304104dSAndroid Build Coastguard Worker 
21*7304104dSAndroid Build Coastguard Worker #define BPF_JNE  0x50
22*7304104dSAndroid Build Coastguard Worker #define BPF_JSGT 0x60
23*7304104dSAndroid Build Coastguard Worker #define BPF_JSGE 0x70
24*7304104dSAndroid Build Coastguard Worker #define BPF_CALL 0x80
25*7304104dSAndroid Build Coastguard Worker #define BPF_EXIT 0x90
26*7304104dSAndroid Build Coastguard Worker #define BPF_JLT  0xa0
27*7304104dSAndroid Build Coastguard Worker #define BPF_JLE  0xb0
28*7304104dSAndroid Build Coastguard Worker #define BPF_JSLT 0xc0
29*7304104dSAndroid Build Coastguard Worker #define BPF_JSLE 0xd0
30*7304104dSAndroid Build Coastguard Worker 
31*7304104dSAndroid Build Coastguard Worker #define BPF_W 0x00
32*7304104dSAndroid Build Coastguard Worker #define BPF_H 0x08
33*7304104dSAndroid Build Coastguard Worker #define BPF_B 0x10
34*7304104dSAndroid Build Coastguard Worker 
35*7304104dSAndroid Build Coastguard Worker #define BPF_IMM 0x00
36*7304104dSAndroid Build Coastguard Worker #define BPF_ABS 0x20
37*7304104dSAndroid Build Coastguard Worker #define BPF_IND 0x40
38*7304104dSAndroid Build Coastguard Worker #define BPF_MEM 0x60
39*7304104dSAndroid Build Coastguard Worker #define BPF_LEN 0x80
40*7304104dSAndroid Build Coastguard Worker #define BPF_MSH 0xa0
41*7304104dSAndroid Build Coastguard Worker 
42*7304104dSAndroid Build Coastguard Worker #define BPF_DW   0x18
43*7304104dSAndroid Build Coastguard Worker #define BPF_XADD 0xc0
44*7304104dSAndroid Build Coastguard Worker 
45*7304104dSAndroid Build Coastguard Worker #define BPF_ADD 0x00
46*7304104dSAndroid Build Coastguard Worker #define BPF_SUB 0x10
47*7304104dSAndroid Build Coastguard Worker #define BPF_MUL 0x20
48*7304104dSAndroid Build Coastguard Worker #define BPF_DIV 0x30
49*7304104dSAndroid Build Coastguard Worker #define BPF_OR  0x40
50*7304104dSAndroid Build Coastguard Worker #define BPF_AND 0x50
51*7304104dSAndroid Build Coastguard Worker #define BPF_LSH 0x60
52*7304104dSAndroid Build Coastguard Worker #define BPF_RSH 0x70
53*7304104dSAndroid Build Coastguard Worker #define BPF_NEG 0x80
54*7304104dSAndroid Build Coastguard Worker #define BPF_MOD 0x90
55*7304104dSAndroid Build Coastguard Worker #define BPF_XOR 0xa0
56*7304104dSAndroid Build Coastguard Worker 
57*7304104dSAndroid Build Coastguard Worker #define BPF_MOV  0xb0
58*7304104dSAndroid Build Coastguard Worker #define BPF_ARSH 0xc0
59*7304104dSAndroid Build Coastguard Worker 
60*7304104dSAndroid Build Coastguard Worker #define BPF_JA   0x00
61*7304104dSAndroid Build Coastguard Worker #define BPF_JEQ  0x10
62*7304104dSAndroid Build Coastguard Worker #define BPF_JGT  0x20
63*7304104dSAndroid Build Coastguard Worker #define BPF_JGE  0x30
64*7304104dSAndroid Build Coastguard Worker #define BPF_JSET 0x40
65*7304104dSAndroid Build Coastguard Worker 
66*7304104dSAndroid Build Coastguard Worker #define BPF_K 0x00
67*7304104dSAndroid Build Coastguard Worker #define BPF_X 0x08
68*7304104dSAndroid Build Coastguard Worker 
69*7304104dSAndroid Build Coastguard Worker #define BPF_END   0xd0
70*7304104dSAndroid Build Coastguard Worker #define BPF_TO_LE 0x00
71*7304104dSAndroid Build Coastguard Worker #define BPF_TO_BE 0x08
72*7304104dSAndroid Build Coastguard Worker 
73*7304104dSAndroid Build Coastguard Worker #define BPF_PSEUDO_MAP_FD 1
74*7304104dSAndroid Build Coastguard Worker 
75*7304104dSAndroid Build Coastguard Worker #define MAX_BPF_REG 10
76*7304104dSAndroid Build Coastguard Worker 
77*7304104dSAndroid Build Coastguard Worker struct bpf_insn
78*7304104dSAndroid Build Coastguard Worker {
79*7304104dSAndroid Build Coastguard Worker   uint8_t code;
80*7304104dSAndroid Build Coastguard Worker   uint8_t dst_reg:4;
81*7304104dSAndroid Build Coastguard Worker   uint8_t src_reg:4;
82*7304104dSAndroid Build Coastguard Worker   int16_t off;
83*7304104dSAndroid Build Coastguard Worker   int32_t imm;
84*7304104dSAndroid Build Coastguard Worker };
85*7304104dSAndroid Build Coastguard Worker 
86*7304104dSAndroid Build Coastguard Worker #endif
87