]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/fr30/decode.h
Initial creation of sourceware repository
[thirdparty/binutils-gdb.git] / sim / fr30 / decode.h
1 /* Decode header for fr30bf.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
6
7 This file is part of the GNU Simulators.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
12 any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23 */
24
25 #ifndef FR30BF_DECODE_H
26 #define FR30BF_DECODE_H
27
28 extern const IDESC *fr30bf_decode (SIM_CPU *, IADDR,
29 CGEN_INSN_INT,
30 ARGBUF *);
31 extern void fr30bf_init_idesc_table (SIM_CPU *);
32
33 /* Enum declaration for instructions in cpu family fr30bf. */
34 typedef enum fr30bf_insn_type {
35 FR30BF_INSN_X_INVALID, FR30BF_INSN_X_AFTER, FR30BF_INSN_X_BEFORE, FR30BF_INSN_X_CTI_CHAIN
36 , FR30BF_INSN_X_CHAIN, FR30BF_INSN_X_BEGIN, FR30BF_INSN_ADD, FR30BF_INSN_ADDI
37 , FR30BF_INSN_ADD2, FR30BF_INSN_ADDC, FR30BF_INSN_ADDN, FR30BF_INSN_ADDNI
38 , FR30BF_INSN_ADDN2, FR30BF_INSN_SUB, FR30BF_INSN_SUBC, FR30BF_INSN_SUBN
39 , FR30BF_INSN_CMP, FR30BF_INSN_CMPI, FR30BF_INSN_CMP2, FR30BF_INSN_AND
40 , FR30BF_INSN_OR, FR30BF_INSN_EOR, FR30BF_INSN_ANDM, FR30BF_INSN_ANDH
41 , FR30BF_INSN_ANDB, FR30BF_INSN_ORM, FR30BF_INSN_ORH, FR30BF_INSN_ORB
42 , FR30BF_INSN_EORM, FR30BF_INSN_EORH, FR30BF_INSN_EORB, FR30BF_INSN_BANDL
43 , FR30BF_INSN_BORL, FR30BF_INSN_BEORL, FR30BF_INSN_BANDH, FR30BF_INSN_BORH
44 , FR30BF_INSN_BEORH, FR30BF_INSN_BTSTL, FR30BF_INSN_BTSTH, FR30BF_INSN_MUL
45 , FR30BF_INSN_MULU, FR30BF_INSN_MULH, FR30BF_INSN_MULUH, FR30BF_INSN_DIV0S
46 , FR30BF_INSN_DIV0U, FR30BF_INSN_DIV1, FR30BF_INSN_DIV2, FR30BF_INSN_DIV3
47 , FR30BF_INSN_DIV4S, FR30BF_INSN_LSL, FR30BF_INSN_LSLI, FR30BF_INSN_LSL2
48 , FR30BF_INSN_LSR, FR30BF_INSN_LSRI, FR30BF_INSN_LSR2, FR30BF_INSN_ASR
49 , FR30BF_INSN_ASRI, FR30BF_INSN_ASR2, FR30BF_INSN_LDI8, FR30BF_INSN_LDI20
50 , FR30BF_INSN_LDI32, FR30BF_INSN_LD, FR30BF_INSN_LDUH, FR30BF_INSN_LDUB
51 , FR30BF_INSN_LDR13, FR30BF_INSN_LDR13UH, FR30BF_INSN_LDR13UB, FR30BF_INSN_LDR14
52 , FR30BF_INSN_LDR14UH, FR30BF_INSN_LDR14UB, FR30BF_INSN_LDR15, FR30BF_INSN_LDR15GR
53 , FR30BF_INSN_LDR15DR, FR30BF_INSN_LDR15PS, FR30BF_INSN_ST, FR30BF_INSN_STH
54 , FR30BF_INSN_STB, FR30BF_INSN_STR13, FR30BF_INSN_STR13H, FR30BF_INSN_STR13B
55 , FR30BF_INSN_STR14, FR30BF_INSN_STR14H, FR30BF_INSN_STR14B, FR30BF_INSN_STR15
56 , FR30BF_INSN_STR15GR, FR30BF_INSN_STR15DR, FR30BF_INSN_STR15PS, FR30BF_INSN_MOV
57 , FR30BF_INSN_MOVDR, FR30BF_INSN_MOVPS, FR30BF_INSN_MOV2DR, FR30BF_INSN_MOV2PS
58 , FR30BF_INSN_JMP, FR30BF_INSN_JMPD, FR30BF_INSN_CALLR, FR30BF_INSN_CALLRD
59 , FR30BF_INSN_CALL, FR30BF_INSN_CALLD, FR30BF_INSN_RET, FR30BF_INSN_RET_D
60 , FR30BF_INSN_INT, FR30BF_INSN_INTE, FR30BF_INSN_RETI, FR30BF_INSN_BRAD
61 , FR30BF_INSN_BRA, FR30BF_INSN_BNOD, FR30BF_INSN_BNO, FR30BF_INSN_BEQD
62 , FR30BF_INSN_BEQ, FR30BF_INSN_BNED, FR30BF_INSN_BNE, FR30BF_INSN_BCD
63 , FR30BF_INSN_BC, FR30BF_INSN_BNCD, FR30BF_INSN_BNC, FR30BF_INSN_BND
64 , FR30BF_INSN_BN, FR30BF_INSN_BPD, FR30BF_INSN_BP, FR30BF_INSN_BVD
65 , FR30BF_INSN_BV, FR30BF_INSN_BNVD, FR30BF_INSN_BNV, FR30BF_INSN_BLTD
66 , FR30BF_INSN_BLT, FR30BF_INSN_BGED, FR30BF_INSN_BGE, FR30BF_INSN_BLED
67 , FR30BF_INSN_BLE, FR30BF_INSN_BGTD, FR30BF_INSN_BGT, FR30BF_INSN_BLSD
68 , FR30BF_INSN_BLS, FR30BF_INSN_BHID, FR30BF_INSN_BHI, FR30BF_INSN_DMOVR13
69 , FR30BF_INSN_DMOVR13H, FR30BF_INSN_DMOVR13B, FR30BF_INSN_DMOVR13PI, FR30BF_INSN_DMOVR13PIH
70 , FR30BF_INSN_DMOVR13PIB, FR30BF_INSN_DMOVR15PI, FR30BF_INSN_DMOV2R13, FR30BF_INSN_DMOV2R13H
71 , FR30BF_INSN_DMOV2R13B, FR30BF_INSN_DMOV2R13PI, FR30BF_INSN_DMOV2R13PIH, FR30BF_INSN_DMOV2R13PIB
72 , FR30BF_INSN_DMOV2R15PD, FR30BF_INSN_LDRES, FR30BF_INSN_STRES, FR30BF_INSN_COPOP
73 , FR30BF_INSN_COPLD, FR30BF_INSN_COPST, FR30BF_INSN_COPSV, FR30BF_INSN_NOP
74 , FR30BF_INSN_ANDCCR, FR30BF_INSN_ORCCR, FR30BF_INSN_STILM, FR30BF_INSN_ADDSP
75 , FR30BF_INSN_EXTSB, FR30BF_INSN_EXTUB, FR30BF_INSN_EXTSH, FR30BF_INSN_EXTUH
76 , FR30BF_INSN_LDM0, FR30BF_INSN_LDM1, FR30BF_INSN_STM0, FR30BF_INSN_STM1
77 , FR30BF_INSN_ENTER, FR30BF_INSN_LEAVE, FR30BF_INSN_XCHB, FR30BF_INSN_MAX
78 } FR30BF_INSN_TYPE;
79
80 #if ! WITH_SEM_SWITCH_FULL
81 #define SEMFULL(fn) extern SEMANTIC_FN CONCAT3 (fr30bf,_sem_,fn);
82 #else
83 #define SEMFULL(fn)
84 #endif
85
86 #if ! WITH_SEM_SWITCH_FAST
87 #define SEMFAST(fn) extern SEMANTIC_FN CONCAT3 (fr30bf,_semf_,fn);
88 #else
89 #define SEMFAST(fn)
90 #endif
91
92 #define SEM(fn) SEMFULL (fn) SEMFAST (fn)
93
94 /* The function version of the before/after handlers is always needed,
95 so we always want the SEMFULL declaration of them. */
96 extern SEMANTIC_FN CONCAT3 (fr30bf,_sem_,x_before);
97 extern SEMANTIC_FN CONCAT3 (fr30bf,_sem_,x_after);
98
99 SEM (x_invalid)
100 SEM (x_after)
101 SEM (x_before)
102 SEM (x_cti_chain)
103 SEM (x_chain)
104 SEM (x_begin)
105 SEM (add)
106 SEM (addi)
107 SEM (add2)
108 SEM (addc)
109 SEM (addn)
110 SEM (addni)
111 SEM (addn2)
112 SEM (sub)
113 SEM (subc)
114 SEM (subn)
115 SEM (cmp)
116 SEM (cmpi)
117 SEM (cmp2)
118 SEM (and)
119 SEM (or)
120 SEM (eor)
121 SEM (andm)
122 SEM (andh)
123 SEM (andb)
124 SEM (orm)
125 SEM (orh)
126 SEM (orb)
127 SEM (eorm)
128 SEM (eorh)
129 SEM (eorb)
130 SEM (bandl)
131 SEM (borl)
132 SEM (beorl)
133 SEM (bandh)
134 SEM (borh)
135 SEM (beorh)
136 SEM (btstl)
137 SEM (btsth)
138 SEM (mul)
139 SEM (mulu)
140 SEM (mulh)
141 SEM (muluh)
142 SEM (div0s)
143 SEM (div0u)
144 SEM (div1)
145 SEM (div2)
146 SEM (div3)
147 SEM (div4s)
148 SEM (lsl)
149 SEM (lsli)
150 SEM (lsl2)
151 SEM (lsr)
152 SEM (lsri)
153 SEM (lsr2)
154 SEM (asr)
155 SEM (asri)
156 SEM (asr2)
157 SEM (ldi8)
158 SEM (ldi20)
159 SEM (ldi32)
160 SEM (ld)
161 SEM (lduh)
162 SEM (ldub)
163 SEM (ldr13)
164 SEM (ldr13uh)
165 SEM (ldr13ub)
166 SEM (ldr14)
167 SEM (ldr14uh)
168 SEM (ldr14ub)
169 SEM (ldr15)
170 SEM (ldr15gr)
171 SEM (ldr15dr)
172 SEM (ldr15ps)
173 SEM (st)
174 SEM (sth)
175 SEM (stb)
176 SEM (str13)
177 SEM (str13h)
178 SEM (str13b)
179 SEM (str14)
180 SEM (str14h)
181 SEM (str14b)
182 SEM (str15)
183 SEM (str15gr)
184 SEM (str15dr)
185 SEM (str15ps)
186 SEM (mov)
187 SEM (movdr)
188 SEM (movps)
189 SEM (mov2dr)
190 SEM (mov2ps)
191 SEM (jmp)
192 SEM (jmpd)
193 SEM (callr)
194 SEM (callrd)
195 SEM (call)
196 SEM (calld)
197 SEM (ret)
198 SEM (ret_d)
199 SEM (int)
200 SEM (inte)
201 SEM (reti)
202 SEM (brad)
203 SEM (bra)
204 SEM (bnod)
205 SEM (bno)
206 SEM (beqd)
207 SEM (beq)
208 SEM (bned)
209 SEM (bne)
210 SEM (bcd)
211 SEM (bc)
212 SEM (bncd)
213 SEM (bnc)
214 SEM (bnd)
215 SEM (bn)
216 SEM (bpd)
217 SEM (bp)
218 SEM (bvd)
219 SEM (bv)
220 SEM (bnvd)
221 SEM (bnv)
222 SEM (bltd)
223 SEM (blt)
224 SEM (bged)
225 SEM (bge)
226 SEM (bled)
227 SEM (ble)
228 SEM (bgtd)
229 SEM (bgt)
230 SEM (blsd)
231 SEM (bls)
232 SEM (bhid)
233 SEM (bhi)
234 SEM (dmovr13)
235 SEM (dmovr13h)
236 SEM (dmovr13b)
237 SEM (dmovr13pi)
238 SEM (dmovr13pih)
239 SEM (dmovr13pib)
240 SEM (dmovr15pi)
241 SEM (dmov2r13)
242 SEM (dmov2r13h)
243 SEM (dmov2r13b)
244 SEM (dmov2r13pi)
245 SEM (dmov2r13pih)
246 SEM (dmov2r13pib)
247 SEM (dmov2r15pd)
248 SEM (ldres)
249 SEM (stres)
250 SEM (copop)
251 SEM (copld)
252 SEM (copst)
253 SEM (copsv)
254 SEM (nop)
255 SEM (andccr)
256 SEM (orccr)
257 SEM (stilm)
258 SEM (addsp)
259 SEM (extsb)
260 SEM (extub)
261 SEM (extsh)
262 SEM (extuh)
263 SEM (ldm0)
264 SEM (ldm1)
265 SEM (stm0)
266 SEM (stm1)
267 SEM (enter)
268 SEM (leave)
269 SEM (xchb)
270
271 #undef SEMFULL
272 #undef SEMFAST
273 #undef SEM
274
275 /* Function unit handlers (user written). */
276
277 extern int fr30bf_model_fr30_1_u_stm (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*reglist*/);
278 extern int fr30bf_model_fr30_1_u_ldm (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*reglist*/);
279 extern int fr30bf_model_fr30_1_u_store (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*Ri*/, INT /*Rj*/);
280 extern int fr30bf_model_fr30_1_u_load (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*Rj*/, INT /*Ri*/);
281 extern int fr30bf_model_fr30_1_u_cti (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*Ri*/);
282 extern int fr30bf_model_fr30_1_u_exec (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*Ri*/, INT /*Rj*/, INT /*Ri*/);
283
284 /* Profiling before/after handlers (user written) */
285
286 extern void fr30bf_model_insn_before (SIM_CPU *, int /*first_p*/);
287 extern void fr30bf_model_insn_after (SIM_CPU *, int /*last_p*/, int /*cycles*/);
288
289 #endif /* FR30BF_DECODE_H */