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