1251881Speter/* DO NOT EDIT!  -*- buffer-read-only: t -*- vi:set ro:  */
2251881Speter/* Instruction opcode header for bpf.
3251881Speter
4251881SpeterTHIS FILE IS MACHINE GENERATED WITH CGEN.
5251881Speter
6251881SpeterCopyright (C) 1996-2020 Free Software Foundation, Inc.
7251881Speter
8251881SpeterThis file is part of the GNU Binutils and/or GDB, the GNU debugger.
9251881Speter
10251881Speter   This file is free software; you can redistribute it and/or modify
11251881Speter   it under the terms of the GNU General Public License as published by
12251881Speter   the Free Software Foundation; either version 3, or (at your option)
13251881Speter   any later version.
14251881Speter
15251881Speter   It is distributed in the hope that it will be useful, but WITHOUT
16251881Speter   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17251881Speter   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
18251881Speter   License for more details.
19251881Speter
20251881Speter   You should have received a copy of the GNU General Public License along
21251881Speter   with this program; if not, write to the Free Software Foundation, Inc.,
22251881Speter   51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
23251881Speter
24251881Speter*/
25251881Speter
26251881Speter#ifndef BPF_OPC_H
27251881Speter#define BPF_OPC_H
28251881Speter
29251881Speter#ifdef __cplusplus
30251881Speterextern "C" {
31251881Speter#endif
32251881Speter
33251881Speter/* -- opc.h */
34251881Speter
35251881Speter#undef CGEN_DIS_HASH_SIZE
36251881Speter#define CGEN_DIS_HASH_SIZE 1
37251881Speter
38251881Speter#undef CGEN_DIS_HASH
39251881Speter#define CGEN_DIS_HASH(buffer, value) 0
40251881Speter
41251881Speter/* Allows reason codes to be output when assembler errors occur.  */
42251881Speter#define CGEN_VERBOSE_ASSEMBLER_ERRORS
43251881Speter
44251881Speter#define CGEN_VALIDATE_INSN_SUPPORTED
45251881Speterextern int bpf_cgen_insn_supported (CGEN_CPU_DESC, const CGEN_INSN *);
46251881Speter
47251881Speter
48251881Speter/* -- opc.c */
49251881Speter/* Enum declaration for bpf instruction types.  */
50262253Spetertypedef enum cgen_insn_type {
51269847Speter  BPF_INSN_INVALID, BPF_INSN_ADDILE, BPF_INSN_ADDRLE, BPF_INSN_ADD32ILE
52251881Speter , BPF_INSN_ADD32RLE, BPF_INSN_SUBILE, BPF_INSN_SUBRLE, BPF_INSN_SUB32ILE
53251881Speter , BPF_INSN_SUB32RLE, BPF_INSN_MULILE, BPF_INSN_MULRLE, BPF_INSN_MUL32ILE
54251881Speter , BPF_INSN_MUL32RLE, BPF_INSN_DIVILE, BPF_INSN_DIVRLE, BPF_INSN_DIV32ILE
55251881Speter , BPF_INSN_DIV32RLE, BPF_INSN_ORILE, BPF_INSN_ORRLE, BPF_INSN_OR32ILE
56251881Speter , BPF_INSN_OR32RLE, BPF_INSN_ANDILE, BPF_INSN_ANDRLE, BPF_INSN_AND32ILE
57251881Speter , BPF_INSN_AND32RLE, BPF_INSN_LSHILE, BPF_INSN_LSHRLE, BPF_INSN_LSH32ILE
58251881Speter , BPF_INSN_LSH32RLE, BPF_INSN_RSHILE, BPF_INSN_RSHRLE, BPF_INSN_RSH32ILE
59251881Speter , BPF_INSN_RSH32RLE, BPF_INSN_MODILE, BPF_INSN_MODRLE, BPF_INSN_MOD32ILE
60251881Speter , BPF_INSN_MOD32RLE, BPF_INSN_XORILE, BPF_INSN_XORRLE, BPF_INSN_XOR32ILE
61251881Speter , BPF_INSN_XOR32RLE, BPF_INSN_ARSHILE, BPF_INSN_ARSHRLE, BPF_INSN_ARSH32ILE
62251881Speter , BPF_INSN_ARSH32RLE, BPF_INSN_NEGLE, BPF_INSN_NEG32LE, BPF_INSN_MOVILE
63251881Speter , BPF_INSN_MOVRLE, BPF_INSN_MOV32ILE, BPF_INSN_MOV32RLE, BPF_INSN_ADDIBE
64251881Speter , BPF_INSN_ADDRBE, BPF_INSN_ADD32IBE, BPF_INSN_ADD32RBE, BPF_INSN_SUBIBE
65251881Speter , BPF_INSN_SUBRBE, BPF_INSN_SUB32IBE, BPF_INSN_SUB32RBE, BPF_INSN_MULIBE
66251881Speter , BPF_INSN_MULRBE, BPF_INSN_MUL32IBE, BPF_INSN_MUL32RBE, BPF_INSN_DIVIBE
67251881Speter , BPF_INSN_DIVRBE, BPF_INSN_DIV32IBE, BPF_INSN_DIV32RBE, BPF_INSN_ORIBE
68251881Speter , BPF_INSN_ORRBE, BPF_INSN_OR32IBE, BPF_INSN_OR32RBE, BPF_INSN_ANDIBE
69251881Speter , BPF_INSN_ANDRBE, BPF_INSN_AND32IBE, BPF_INSN_AND32RBE, BPF_INSN_LSHIBE
70251881Speter , BPF_INSN_LSHRBE, BPF_INSN_LSH32IBE, BPF_INSN_LSH32RBE, BPF_INSN_RSHIBE
71251881Speter , BPF_INSN_RSHRBE, BPF_INSN_RSH32IBE, BPF_INSN_RSH32RBE, BPF_INSN_MODIBE
72251881Speter , BPF_INSN_MODRBE, BPF_INSN_MOD32IBE, BPF_INSN_MOD32RBE, BPF_INSN_XORIBE
73251881Speter , BPF_INSN_XORRBE, BPF_INSN_XOR32IBE, BPF_INSN_XOR32RBE, BPF_INSN_ARSHIBE
74251881Speter , BPF_INSN_ARSHRBE, BPF_INSN_ARSH32IBE, BPF_INSN_ARSH32RBE, BPF_INSN_NEGBE
75251881Speter , BPF_INSN_NEG32BE, BPF_INSN_MOVIBE, BPF_INSN_MOVRBE, BPF_INSN_MOV32IBE
76251881Speter , BPF_INSN_MOV32RBE, BPF_INSN_ENDLELE, BPF_INSN_ENDBELE, BPF_INSN_ENDLEBE
77251881Speter , BPF_INSN_ENDBEBE, BPF_INSN_LDDWLE, BPF_INSN_LDDWBE, BPF_INSN_LDABSW
78251881Speter , BPF_INSN_LDABSH, BPF_INSN_LDABSB, BPF_INSN_LDABSDW, BPF_INSN_LDINDWLE
79251881Speter , BPF_INSN_LDINDHLE, BPF_INSN_LDINDBLE, BPF_INSN_LDINDDWLE, BPF_INSN_LDINDWBE
80251881Speter , BPF_INSN_LDINDHBE, BPF_INSN_LDINDBBE, BPF_INSN_LDINDDWBE, BPF_INSN_LDXWLE
81251881Speter , BPF_INSN_LDXHLE, BPF_INSN_LDXBLE, BPF_INSN_LDXDWLE, BPF_INSN_STXWLE
82251881Speter , BPF_INSN_STXHLE, BPF_INSN_STXBLE, BPF_INSN_STXDWLE, BPF_INSN_LDXWBE
83251881Speter , BPF_INSN_LDXHBE, BPF_INSN_LDXBBE, BPF_INSN_LDXDWBE, BPF_INSN_STXWBE
84251881Speter , BPF_INSN_STXHBE, BPF_INSN_STXBBE, BPF_INSN_STXDWBE, BPF_INSN_STBLE
85251881Speter , BPF_INSN_STHLE, BPF_INSN_STWLE, BPF_INSN_STDWLE, BPF_INSN_STBBE
86251881Speter , BPF_INSN_STHBE, BPF_INSN_STWBE, BPF_INSN_STDWBE, BPF_INSN_JEQILE
87251881Speter , BPF_INSN_JEQRLE, BPF_INSN_JEQ32ILE, BPF_INSN_JEQ32RLE, BPF_INSN_JGTILE
88251881Speter , BPF_INSN_JGTRLE, BPF_INSN_JGT32ILE, BPF_INSN_JGT32RLE, BPF_INSN_JGEILE
89251881Speter , BPF_INSN_JGERLE, BPF_INSN_JGE32ILE, BPF_INSN_JGE32RLE, BPF_INSN_JLTILE
90251881Speter , BPF_INSN_JLTRLE, BPF_INSN_JLT32ILE, BPF_INSN_JLT32RLE, BPF_INSN_JLEILE
91251881Speter , BPF_INSN_JLERLE, BPF_INSN_JLE32ILE, BPF_INSN_JLE32RLE, BPF_INSN_JSETILE
92251881Speter , BPF_INSN_JSETRLE, BPF_INSN_JSET32ILE, BPF_INSN_JSET32RLE, BPF_INSN_JNEILE
93251881Speter , BPF_INSN_JNERLE, BPF_INSN_JNE32ILE, BPF_INSN_JNE32RLE, BPF_INSN_JSGTILE
94251881Speter , BPF_INSN_JSGTRLE, BPF_INSN_JSGT32ILE, BPF_INSN_JSGT32RLE, BPF_INSN_JSGEILE
95251881Speter , BPF_INSN_JSGERLE, BPF_INSN_JSGE32ILE, BPF_INSN_JSGE32RLE, BPF_INSN_JSLTILE
96251881Speter , BPF_INSN_JSLTRLE, BPF_INSN_JSLT32ILE, BPF_INSN_JSLT32RLE, BPF_INSN_JSLEILE
97251881Speter , BPF_INSN_JSLERLE, BPF_INSN_JSLE32ILE, BPF_INSN_JSLE32RLE, BPF_INSN_JEQIBE
98251881Speter , BPF_INSN_JEQRBE, BPF_INSN_JEQ32IBE, BPF_INSN_JEQ32RBE, BPF_INSN_JGTIBE
99251881Speter , BPF_INSN_JGTRBE, BPF_INSN_JGT32IBE, BPF_INSN_JGT32RBE, BPF_INSN_JGEIBE
100251881Speter , BPF_INSN_JGERBE, BPF_INSN_JGE32IBE, BPF_INSN_JGE32RBE, BPF_INSN_JLTIBE
101251881Speter , BPF_INSN_JLTRBE, BPF_INSN_JLT32IBE, BPF_INSN_JLT32RBE, BPF_INSN_JLEIBE
102251881Speter , BPF_INSN_JLERBE, BPF_INSN_JLE32IBE, BPF_INSN_JLE32RBE, BPF_INSN_JSETIBE
103251881Speter , BPF_INSN_JSETRBE, BPF_INSN_JSET32IBE, BPF_INSN_JSET32RBE, BPF_INSN_JNEIBE
104251881Speter , BPF_INSN_JNERBE, BPF_INSN_JNE32IBE, BPF_INSN_JNE32RBE, BPF_INSN_JSGTIBE
105251881Speter , BPF_INSN_JSGTRBE, BPF_INSN_JSGT32IBE, BPF_INSN_JSGT32RBE, BPF_INSN_JSGEIBE
106251881Speter , BPF_INSN_JSGERBE, BPF_INSN_JSGE32IBE, BPF_INSN_JSGE32RBE, BPF_INSN_JSLTIBE
107251881Speter , BPF_INSN_JSLTRBE, BPF_INSN_JSLT32IBE, BPF_INSN_JSLT32RBE, BPF_INSN_JSLEIBE
108251881Speter , BPF_INSN_JSLERBE, BPF_INSN_JSLE32IBE, BPF_INSN_JSLE32RBE, BPF_INSN_CALLLE
109251881Speter , BPF_INSN_CALLBE, BPF_INSN_CALLRLE, BPF_INSN_CALLRBE, BPF_INSN_JA
110251881Speter , BPF_INSN_EXIT, BPF_INSN_XADDDWLE, BPF_INSN_XADDWLE, BPF_INSN_XADDDWBE
111251881Speter , BPF_INSN_XADDWBE, BPF_INSN_BRKPT
112251881Speter} CGEN_INSN_TYPE;
113251881Speter
114251881Speter/* Index of `invalid' insn place holder.  */
115251881Speter#define CGEN_INSN_INVALID BPF_INSN_INVALID
116251881Speter
117251881Speter/* Total number of insns in table.  */
118251881Speter#define MAX_INSNS ((int) BPF_INSN_BRKPT + 1)
119251881Speter
120251881Speter/* This struct records data prior to insertion or after extraction.  */
121251881Speterstruct cgen_fields
122251881Speter{
123251881Speter  int length;
124251881Speter  long f_nil;
125251881Speter  long f_anyof;
126251881Speter  long f_op_code;
127251881Speter  long f_op_src;
128251881Speter  long f_op_class;
129251881Speter  long f_op_mode;
130251881Speter  long f_op_size;
131251881Speter  long f_dstle;
132251881Speter  long f_srcle;
133251881Speter  long f_dstbe;
134251881Speter  long f_srcbe;
135251881Speter  long f_regs;
136251881Speter  long f_offset16;
137251881Speter  long f_imm32;
138251881Speter  long f_imm64_a;
139251881Speter  long f_imm64_b;
140251881Speter  long f_imm64_c;
141251881Speter  int64_t f_imm64;
142251881Speter};
143251881Speter
144251881Speter#define CGEN_INIT_PARSE(od) \
145251881Speter{\
146251881Speter}
147251881Speter#define CGEN_INIT_INSERT(od) \
148251881Speter{\
149251881Speter}
150251881Speter#define CGEN_INIT_EXTRACT(od) \
151251881Speter{\
152251881Speter}
153251881Speter#define CGEN_INIT_PRINT(od) \
154251881Speter{\
155251881Speter}
156251881Speter
157251881Speter
158251881Speter   #ifdef __cplusplus
159251881Speter   }
160251881Speter   #endif
161251881Speter
162251881Speter#endif /* BPF_OPC_H */
163251881Speter