1 /* CPU family header for crisv32f.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright 1996-2014 Free Software Foundation, Inc.
7 This file is part of the GNU simulators.
9 This file 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 3, or (at your option)
14 It is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 License for more details.
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, see <http://www.gnu.org/licenses/>.
24 #ifndef CPU_CRISV32F_H
25 #define CPU_CRISV32F_H
27 /* Maximum number of instructions that are fetched at a time.
28 This is for LIW type instructions sets (e.g. m32r). */
29 #define MAX_LIW_INSNS 1
31 /* Maximum number of instructions that can be executed in parallel. */
32 #define MAX_PARALLEL_INSNS 1
34 /* The size of an "int" needed to hold an instruction word.
35 This is usually 32 bits, but some architectures needs 64 bits. */
36 typedef CGEN_INSN_INT CGEN_INSN_WORD;
38 #include "cgen-engine.h"
40 /* CPU state information. */
42 /* Hardware elements. */
46 #define GET_H_PC() CPU (h_pc)
49 CPU (h_pc) = ANDSI ((x), (~ (1)));\
51 /* General purpose registers */
53 #define GET_H_GR_ACR(a1) CPU (h_gr_acr)[a1]
54 #define SET_H_GR_ACR(a1, x) (CPU (h_gr_acr)[a1] = (x))
55 /* Special registers for v32 */
57 #define GET_H_SR_V32(index) (ORIF (ORIF (((index) == (((UINT) 0))), ((index) == (((UINT) 4)))), ((index) == (((UINT) 8))))) ? (0) : (((index) == (((UINT) 1)))) ? (32) : (((index) == (((UINT) 13)))) ? (ORSI (ANDSI (CPU (h_sr_v32[((UINT) 13)]), 1073740800), ORSI (ZEXTBISI (CPU (h_cbit)), ORSI (SLLSI (ZEXTBISI (CPU (h_vbit)), 1), ORSI (SLLSI (ZEXTBISI (CPU (h_zbit)), 2), ORSI (SLLSI (ZEXTBISI (CPU (h_nbit)), 3), ORSI (SLLSI (ZEXTBISI (CPU (h_xbit)), 4), ORSI (SLLSI (ZEXTBISI (GET_H_IBIT ()), 5), ORSI (SLLSI (ZEXTBISI (GET_H_UBIT ()), 6), ORSI (SLLSI (ZEXTBISI (CPU (h_pbit)), 7), ORSI (SLLSI (ZEXTBISI (CPU (h_rbit)), 8), ORSI (SLLSI (ZEXTBISI (CPU (h_sbit)), 9), ORSI (SLLSI (ZEXTBISI (CPU (h_mbit)), 30), ORSI (SLLSI (ZEXTBISI (CPU (h_qbit)), 31), 0)))))))))))))) : (((index) == (((UINT) 14)))) ? (((GET_H_UBIT ()) ? (CPU (h_gr_acr[((UINT) 14)])) : (CPU (h_sr_v32[((UINT) 14)])))) : (CPU (h_sr_v32[index]))
58 #define SET_H_SR_V32(index, x) \
60 if (ORIF (ORIF ((((index)) == (((UINT) 0))), (((index)) == (((UINT) 4)))), ORIF ((((index)) == (((UINT) 8))), (((index)) == (((UINT) 1)))))) {\
63 else if ((((index)) == (((UINT) 13)))) {\
65 CPU (h_cbit) = ((NESI (ANDSI ((x), ((1) << (0))), 0)) ? (1) : (0));\
66 CPU (h_vbit) = ((NESI (ANDSI ((x), ((1) << (1))), 0)) ? (1) : (0));\
67 CPU (h_zbit) = ((NESI (ANDSI ((x), ((1) << (2))), 0)) ? (1) : (0));\
68 CPU (h_nbit) = ((NESI (ANDSI ((x), ((1) << (3))), 0)) ? (1) : (0));\
69 CPU (h_xbit) = ((NESI (ANDSI ((x), ((1) << (4))), 0)) ? (1) : (0));\
70 SET_H_IBIT (((NESI (ANDSI ((x), ((1) << (5))), 0)) ? (1) : (0)));\
71 SET_H_SBIT (((NESI (ANDSI ((x), ((1) << (9))), 0)) ? (1) : (0)));\
72 SET_H_MBIT (((NESI (ANDSI ((x), ((1) << (30))), 0)) ? (1) : (0)));\
73 CPU (h_pbit) = ((NESI (ANDSI ((x), ((1) << (7))), 0)) ? (1) : (0));\
74 CPU (h_rbit) = ((NESI (ANDSI ((x), ((1) << (8))), 0)) ? (1) : (0));\
75 SET_H_QBIT (((NESI (ANDSI ((x), ((1) << (31))), 0)) ? (1) : (0)));\
76 SET_H_UBIT (((NESI (ANDSI ((x), ((1) << (6))), 0)) ? (1) : (0)));\
77 CPU (h_sr_v32[(index)]) = (x);\
80 else if ((((index)) == (((UINT) 14)))) {\
83 CPU (h_gr_acr[((UINT) 14)]) = (x);\
85 CPU (h_sr_v32[((UINT) 14)]) = (x);\
88 else if ((((index)) == (((UINT) 3)))) {\
89 if (NOTBI (GET_H_UBIT ())) {\
90 CPU (h_sr_v32[((UINT) 3)]) = (x);\
93 else if ((((index)) == (((UINT) 9)))) {\
94 if (NOTBI (GET_H_UBIT ())) {\
95 CPU (h_sr_v32[((UINT) 9)]) = (x);\
98 else if ((((index)) == (((UINT) 2)))) {\
99 if (NOTBI (GET_H_UBIT ())) {\
101 crisv32f_write_pid_handler (current_cpu, (x));\
102 CPU (h_sr_v32[((UINT) 2)]) = (x);\
106 else if ((((index)) == (((UINT) 15)))) {\
107 if (NOTBI (GET_H_UBIT ())) {\
108 CPU (h_sr_v32[((UINT) 15)]) = (x);\
112 CPU (h_sr_v32[(index)]) = (x);\
117 #define GET_H_CBIT() CPU (h_cbit)
118 #define SET_H_CBIT(x) (CPU (h_cbit) = (x))
121 #define GET_H_VBIT() CPU (h_vbit)
122 #define SET_H_VBIT(x) (CPU (h_vbit) = (x))
125 #define GET_H_ZBIT() CPU (h_zbit)
126 #define SET_H_ZBIT(x) (CPU (h_zbit) = (x))
129 #define GET_H_NBIT() CPU (h_nbit)
130 #define SET_H_NBIT(x) (CPU (h_nbit) = (x))
131 /* extended-arithmetic bit */
133 #define GET_H_XBIT() CPU (h_xbit)
134 #define SET_H_XBIT(x) (CPU (h_xbit) = (x))
135 /* sequence-broken bit */
137 #define GET_H_PBIT() CPU (h_pbit)
138 #define SET_H_PBIT(x) (CPU (h_pbit) = (x))
139 /* carry bit for MCP+restore-p bit */
141 #define GET_H_RBIT() CPU (h_rbit)
142 #define SET_H_RBIT(x) (CPU (h_rbit) = (x))
145 #define GET_H_GBIT() CPU (h_gbit)
146 #define SET_H_GBIT(x) (CPU (h_gbit) = (x))
147 /* Kernel stack pointer during user mode */
149 #define GET_H_KERNEL_SP() CPU (h_kernel_sp)
150 #define SET_H_KERNEL_SP(x) (CPU (h_kernel_sp) = (x))
153 #define GET_H_UBIT_V32() CPU (h_ubit_v32)
154 #define SET_H_UBIT_V32(x) \
157 if (ANDIF ((x), NOTBI (CPU (h_ubit_v32)))) {\
159 CPU (h_kernel_sp) = CPU (h_gr_acr[((UINT) 14)]);\
160 CPU (h_gr_acr[((UINT) 14)]) = CPU (h_sr_v32[((UINT) 14)]);\
161 CPU (h_ubit_v32) = (x);\
162 crisv32f_usermode_enabled (current_cpu);\
167 /* Interrupt-enable bit */
169 #define GET_H_IBIT_V32() CPU (h_ibit_v32)
170 #define SET_H_IBIT_V32(x) \
173 if (NOTBI (GET_H_UBIT ())) {\
176 tmp_enabled = ANDIF ((x), NOTBI (CPU (h_ibit_v32)));\
177 CPU (h_ibit_v32) = (x);\
179 crisv32f_interrupts_enabled (current_cpu);\
187 #define GET_H_MBIT() CPU (h_mbit)
188 #define SET_H_MBIT(x) \
191 if (ANDIF ((x), ANDIF (NOTBI (CPU (h_mbit)), NOTBI (GET_H_UBIT ())))) {\
194 crisv32f_nmi_enabled (current_cpu);\
199 /* Pending single-step bit */
201 #define GET_H_QBIT() CPU (h_qbit)
202 #define SET_H_QBIT(x) \
205 if (NOTBI (GET_H_UBIT ())) {\
210 /* Cause single step exception on ... [see CRISv32 ref] bit */
212 #define GET_H_SBIT() CPU (h_sbit)
213 #define SET_H_SBIT(x) \
216 if (NOTBI (GET_H_UBIT ())) {\
219 tmp_enabled = ANDIF ((x), NOTBI (CPU (h_sbit)));\
222 crisv32f_single_step_enabled (current_cpu);\
229 #define CPU_CGEN_HW(cpu) (& (cpu)->cpu_data.hardware)
234 #define GET_H_V32_V32() 1
235 #define SET_H_V32_V32(x) \
237 cgen_rtx_error (current_cpu, "Can't set h-v32");\
239 #define GET_H_GR(index) CPU (h_gr_acr[index])
240 #define SET_H_GR(index, x) \
242 CPU (h_gr_acr[(index)]) = (x);\
244 #define GET_H_RAW_GR_ACR(index) CPU (h_gr_acr[index])
245 #define SET_H_RAW_GR_ACR(index, x) \
247 CPU (h_gr_acr[(index)]) = (x);\
249 #define GET_H_SR(index) GET_H_SR_V32 (index)
250 #define SET_H_SR(index, x) \
252 SET_H_SR_V32 ((index), (x));\
254 #define GET_H_SUPR(index) crisv32f_read_supr (current_cpu, index)
255 #define SET_H_SUPR(index, x) \
257 crisv32f_write_supr (current_cpu, (index), (x));\
259 #define GET_H_CBIT_MOVE() GET_H_CBIT_MOVE_V32 ()
260 #define SET_H_CBIT_MOVE(x) \
262 SET_H_CBIT_MOVE_V32 ((x));\
264 #define GET_H_CBIT_MOVE_V32() (cgen_rtx_error (current_cpu, "Can't get h-cbit-move on CRISv32"), 0)
265 #define SET_H_CBIT_MOVE_V32(x) \
269 #define GET_H_VBIT_MOVE() GET_H_VBIT_MOVE_V32 ()
270 #define SET_H_VBIT_MOVE(x) \
272 SET_H_VBIT_MOVE_V32 ((x));\
274 #define GET_H_VBIT_MOVE_V32() (cgen_rtx_error (current_cpu, "Can't get h-vbit-move on CRISv32"), 0)
275 #define SET_H_VBIT_MOVE_V32(x) \
279 #define GET_H_ZBIT_MOVE() GET_H_ZBIT_MOVE_V32 ()
280 #define SET_H_ZBIT_MOVE(x) \
282 SET_H_ZBIT_MOVE_V32 ((x));\
284 #define GET_H_ZBIT_MOVE_V32() (cgen_rtx_error (current_cpu, "Can't get h-zbit-move on CRISv32"), 0)
285 #define SET_H_ZBIT_MOVE_V32(x) \
289 #define GET_H_NBIT_MOVE() GET_H_NBIT_MOVE_V32 ()
290 #define SET_H_NBIT_MOVE(x) \
292 SET_H_NBIT_MOVE_V32 ((x));\
294 #define GET_H_NBIT_MOVE_V32() (cgen_rtx_error (current_cpu, "Can't get h-nbit-move on CRISv32"), 0)
295 #define SET_H_NBIT_MOVE_V32(x) \
299 #define GET_H_IBIT() CPU (h_ibit_v32)
300 #define SET_H_IBIT(x) \
302 SET_H_IBIT_V32 ((x));\
304 #define GET_H_UBIT() CPU (h_ubit_v32)
305 #define SET_H_UBIT(x) \
307 SET_H_UBIT_V32 ((x));\
309 #define GET_H_INSN_PREFIXED_P() GET_H_INSN_PREFIXED_P_V32 ()
310 #define SET_H_INSN_PREFIXED_P(x) \
312 SET_H_INSN_PREFIXED_P_V32 ((x));\
314 #define GET_H_INSN_PREFIXED_P_V32() 0
315 #define SET_H_INSN_PREFIXED_P_V32(x) \
319 #define GET_H_PREFIXREG_V32() GET_H_GR (((UINT) 15))
320 #define SET_H_PREFIXREG_V32(x) \
322 SET_H_GR (((UINT) 15), (x));\
325 /* Cover fns for register access. */
326 BI crisv32f_h_v32_v32_get (SIM_CPU *);
327 void crisv32f_h_v32_v32_set (SIM_CPU *, BI);
328 USI crisv32f_h_pc_get (SIM_CPU *);
329 void crisv32f_h_pc_set (SIM_CPU *, USI);
330 SI crisv32f_h_gr_get (SIM_CPU *, UINT);
331 void crisv32f_h_gr_set (SIM_CPU *, UINT, SI);
332 SI crisv32f_h_gr_acr_get (SIM_CPU *, UINT);
333 void crisv32f_h_gr_acr_set (SIM_CPU *, UINT, SI);
334 SI crisv32f_h_raw_gr_acr_get (SIM_CPU *, UINT);
335 void crisv32f_h_raw_gr_acr_set (SIM_CPU *, UINT, SI);
336 SI crisv32f_h_sr_get (SIM_CPU *, UINT);
337 void crisv32f_h_sr_set (SIM_CPU *, UINT, SI);
338 SI crisv32f_h_sr_v32_get (SIM_CPU *, UINT);
339 void crisv32f_h_sr_v32_set (SIM_CPU *, UINT, SI);
340 SI crisv32f_h_supr_get (SIM_CPU *, UINT);
341 void crisv32f_h_supr_set (SIM_CPU *, UINT, SI);
342 BI crisv32f_h_cbit_get (SIM_CPU *);
343 void crisv32f_h_cbit_set (SIM_CPU *, BI);
344 BI crisv32f_h_cbit_move_get (SIM_CPU *);
345 void crisv32f_h_cbit_move_set (SIM_CPU *, BI);
346 BI crisv32f_h_cbit_move_v32_get (SIM_CPU *);
347 void crisv32f_h_cbit_move_v32_set (SIM_CPU *, BI);
348 BI crisv32f_h_vbit_get (SIM_CPU *);
349 void crisv32f_h_vbit_set (SIM_CPU *, BI);
350 BI crisv32f_h_vbit_move_get (SIM_CPU *);
351 void crisv32f_h_vbit_move_set (SIM_CPU *, BI);
352 BI crisv32f_h_vbit_move_v32_get (SIM_CPU *);
353 void crisv32f_h_vbit_move_v32_set (SIM_CPU *, BI);
354 BI crisv32f_h_zbit_get (SIM_CPU *);
355 void crisv32f_h_zbit_set (SIM_CPU *, BI);
356 BI crisv32f_h_zbit_move_get (SIM_CPU *);
357 void crisv32f_h_zbit_move_set (SIM_CPU *, BI);
358 BI crisv32f_h_zbit_move_v32_get (SIM_CPU *);
359 void crisv32f_h_zbit_move_v32_set (SIM_CPU *, BI);
360 BI crisv32f_h_nbit_get (SIM_CPU *);
361 void crisv32f_h_nbit_set (SIM_CPU *, BI);
362 BI crisv32f_h_nbit_move_get (SIM_CPU *);
363 void crisv32f_h_nbit_move_set (SIM_CPU *, BI);
364 BI crisv32f_h_nbit_move_v32_get (SIM_CPU *);
365 void crisv32f_h_nbit_move_v32_set (SIM_CPU *, BI);
366 BI crisv32f_h_xbit_get (SIM_CPU *);
367 void crisv32f_h_xbit_set (SIM_CPU *, BI);
368 BI crisv32f_h_ibit_get (SIM_CPU *);
369 void crisv32f_h_ibit_set (SIM_CPU *, BI);
370 BI crisv32f_h_pbit_get (SIM_CPU *);
371 void crisv32f_h_pbit_set (SIM_CPU *, BI);
372 BI crisv32f_h_rbit_get (SIM_CPU *);
373 void crisv32f_h_rbit_set (SIM_CPU *, BI);
374 BI crisv32f_h_ubit_get (SIM_CPU *);
375 void crisv32f_h_ubit_set (SIM_CPU *, BI);
376 BI crisv32f_h_gbit_get (SIM_CPU *);
377 void crisv32f_h_gbit_set (SIM_CPU *, BI);
378 SI crisv32f_h_kernel_sp_get (SIM_CPU *);
379 void crisv32f_h_kernel_sp_set (SIM_CPU *, SI);
380 BI crisv32f_h_ubit_v32_get (SIM_CPU *);
381 void crisv32f_h_ubit_v32_set (SIM_CPU *, BI);
382 BI crisv32f_h_ibit_v32_get (SIM_CPU *);
383 void crisv32f_h_ibit_v32_set (SIM_CPU *, BI);
384 BI crisv32f_h_mbit_get (SIM_CPU *);
385 void crisv32f_h_mbit_set (SIM_CPU *, BI);
386 BI crisv32f_h_qbit_get (SIM_CPU *);
387 void crisv32f_h_qbit_set (SIM_CPU *, BI);
388 BI crisv32f_h_sbit_get (SIM_CPU *);
389 void crisv32f_h_sbit_set (SIM_CPU *, BI);
390 BI crisv32f_h_insn_prefixed_p_get (SIM_CPU *);
391 void crisv32f_h_insn_prefixed_p_set (SIM_CPU *, BI);
392 BI crisv32f_h_insn_prefixed_p_v32_get (SIM_CPU *);
393 void crisv32f_h_insn_prefixed_p_v32_set (SIM_CPU *, BI);
394 SI crisv32f_h_prefixreg_v32_get (SIM_CPU *);
395 void crisv32f_h_prefixreg_v32_set (SIM_CPU *, SI);
397 /* These must be hand-written. */
398 extern CPUREG_FETCH_FN crisv32f_fetch_register;
399 extern CPUREG_STORE_FN crisv32f_store_register;
402 UINT prev_prev_prev_modf_regs;
403 UINT prev_prev_modf_regs;
406 UINT prev_prev_prev_movem_dest_regs;
407 UINT prev_prev_movem_dest_regs;
408 UINT prev_movem_dest_regs;
409 UINT movem_dest_regs;
410 } MODEL_CRISV32_DATA;
412 /* Instruction argument buffer. */
415 struct { /* no operands */
425 IADDR i_o_word_pcrel;
433 unsigned char in_h_sr_SI_13;
434 unsigned char out_h_sr_SI_13;
442 ADDR i_const32_pcrel;
444 unsigned char out_Pd;
449 unsigned char out_Rd;
452 ADDR i_const32_pcrel;
454 unsigned char out_Rd;
457 INT f_indir_pc__dword;
459 unsigned char out_Pd;
460 } sfmt_move_c_sprv32_p2;
464 unsigned char out_Rd;
467 INT f_indir_pc__dword;
470 unsigned char out_Rd;
473 INT f_indir_pc__word;
476 unsigned char out_Rd;
479 INT f_indir_pc__byte;
482 unsigned char out_Rd;
488 unsigned char out_Rd;
494 unsigned char out_h_gr_SI_index_of__INT_Rd;
497 INT f_indir_pc__dword;
500 unsigned char out_h_gr_SI_index_of__INT_Rd;
503 INT f_indir_pc__word;
506 unsigned char out_h_gr_SI_index_of__INT_Rd;
509 INT f_indir_pc__byte;
512 unsigned char out_h_gr_SI_index_of__INT_Rd;
518 unsigned char out_h_gr_SI_index_of__INT_Rd;
525 unsigned char out_h_gr_SI_index_of__INT_Rs;
532 unsigned char out_Rd;
533 unsigned char out_h_sr_SI_7;
541 unsigned char out_Rs;
542 } sfmt_move_spr_mv32;
548 unsigned char out_Pd;
549 unsigned char out_Rs;
550 } sfmt_move_m_sprv32;
556 unsigned char out_Rd;
557 unsigned char out_Rs;
565 unsigned char out_Rs;
566 unsigned char out_h_gr_SI_index_of__INT_Rd;
574 unsigned char out_Rs;
575 unsigned char out_h_gr_SI_if__SI_andif__DFLT_prefix_set_not__UINT_inc_index_of__INT_Rs_index_of__INT_Rd;
583 unsigned char out_Rs;
584 unsigned char out_h_gr_SI_0;
585 unsigned char out_h_gr_SI_1;
586 unsigned char out_h_gr_SI_10;
587 unsigned char out_h_gr_SI_11;
588 unsigned char out_h_gr_SI_12;
589 unsigned char out_h_gr_SI_13;
590 unsigned char out_h_gr_SI_14;
591 unsigned char out_h_gr_SI_15;
592 unsigned char out_h_gr_SI_2;
593 unsigned char out_h_gr_SI_3;
594 unsigned char out_h_gr_SI_4;
595 unsigned char out_h_gr_SI_5;
596 unsigned char out_h_gr_SI_6;
597 unsigned char out_h_gr_SI_7;
598 unsigned char out_h_gr_SI_8;
599 unsigned char out_h_gr_SI_9;
600 } sfmt_movem_m_r_v32;
607 unsigned char in_h_gr_SI_0;
608 unsigned char in_h_gr_SI_1;
609 unsigned char in_h_gr_SI_10;
610 unsigned char in_h_gr_SI_11;
611 unsigned char in_h_gr_SI_12;
612 unsigned char in_h_gr_SI_13;
613 unsigned char in_h_gr_SI_14;
614 unsigned char in_h_gr_SI_15;
615 unsigned char in_h_gr_SI_2;
616 unsigned char in_h_gr_SI_3;
617 unsigned char in_h_gr_SI_4;
618 unsigned char in_h_gr_SI_5;
619 unsigned char in_h_gr_SI_6;
620 unsigned char in_h_gr_SI_7;
621 unsigned char in_h_gr_SI_8;
622 unsigned char in_h_gr_SI_9;
623 unsigned char out_Rs;
624 } sfmt_movem_r_m_v32;
626 /* Writeback handler. */
628 /* Pointer to argbuf entry for insn whose results need writing back. */
629 const struct argbuf *abuf;
631 /* x-before handler */
633 /*const SCACHE *insns[MAX_PARALLEL_INSNS];*/
636 /* x-after handler */
640 /* This entry is used to terminate each pbb. */
642 /* Number of insns in pbb. */
644 /* Next pbb to execute. */
646 SCACHE *branch_target;
651 /* The ARGBUF struct. */
653 /* These are the baseclass definitions. */
658 /* ??? Temporary hack for skip insns. */
661 /* cpu specific data follows */
664 union sem_fields fields;
669 ??? SCACHE used to contain more than just argbuf. We could delete the
670 type entirely and always just use ARGBUF, but for future concerns and as
671 a level of abstraction it is left in. */
674 struct argbuf argbuf;
677 /* Macros to simplify extraction, reading and semantic code.
678 These define and assign the local vars that contain the insn's fields. */
680 #define EXTRACT_IFMT_EMPTY_VARS \
682 #define EXTRACT_IFMT_EMPTY_CODE \
685 #define EXTRACT_IFMT_MOVE_B_R_VARS \
692 #define EXTRACT_IFMT_MOVE_B_R_CODE \
694 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
695 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
696 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
697 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
698 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
700 #define EXTRACT_IFMT_MOVEQ_VARS \
706 #define EXTRACT_IFMT_MOVEQ_CODE \
708 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
709 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
710 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
711 f_s6 = EXTRACT_LSB0_SINT (insn, 16, 5, 6); \
713 #define EXTRACT_IFMT_MOVECBR_VARS \
715 INT f_indir_pc__byte; \
720 /* Contents of trailing part of insn. */ \
723 #define EXTRACT_IFMT_MOVECBR_CODE \
725 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
726 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
727 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)); \
728 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
729 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
730 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
731 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
733 #define EXTRACT_IFMT_MOVECWR_VARS \
735 INT f_indir_pc__word; \
740 /* Contents of trailing part of insn. */ \
743 #define EXTRACT_IFMT_MOVECWR_CODE \
745 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
746 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
747 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)); \
748 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
749 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
750 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
751 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
753 #define EXTRACT_IFMT_MOVECDR_VARS \
754 INT f_indir_pc__dword; \
760 /* Contents of trailing part of insn. */ \
763 #define EXTRACT_IFMT_MOVECDR_CODE \
765 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
766 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0)); \
767 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
768 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
769 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
770 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
771 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
773 #define EXTRACT_IFMT_MOVUCBR_VARS \
775 INT f_indir_pc__byte; \
780 /* Contents of trailing part of insn. */ \
783 #define EXTRACT_IFMT_MOVUCBR_CODE \
785 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
786 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
787 f_indir_pc__byte = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)); \
788 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
789 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
790 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
791 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
793 #define EXTRACT_IFMT_MOVUCWR_VARS \
795 INT f_indir_pc__word; \
800 /* Contents of trailing part of insn. */ \
803 #define EXTRACT_IFMT_MOVUCWR_CODE \
805 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
806 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
807 f_indir_pc__word = (0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)); \
808 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
809 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
810 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
811 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
813 #define EXTRACT_IFMT_ADDQ_VARS \
819 #define EXTRACT_IFMT_ADDQ_CODE \
821 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
822 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
823 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
824 f_u6 = EXTRACT_LSB0_UINT (insn, 16, 5, 6); \
826 #define EXTRACT_IFMT_CMP_M_B_M_VARS \
834 #define EXTRACT_IFMT_CMP_M_B_M_CODE \
836 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
837 f_membit = EXTRACT_LSB0_UINT (insn, 16, 11, 1); \
838 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1); \
839 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
840 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
841 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
843 #define EXTRACT_IFMT_MOVE_R_SPRV32_VARS \
850 #define EXTRACT_IFMT_MOVE_R_SPRV32_CODE \
852 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
853 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
854 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
855 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
856 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
858 #define EXTRACT_IFMT_MOVE_SPR_RV32_VARS \
865 #define EXTRACT_IFMT_MOVE_SPR_RV32_CODE \
867 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
868 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
869 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
870 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
871 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
873 #define EXTRACT_IFMT_MOVE_M_SPRV32_VARS \
881 #define EXTRACT_IFMT_MOVE_M_SPRV32_CODE \
883 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
884 f_membit = EXTRACT_LSB0_UINT (insn, 16, 11, 1); \
885 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1); \
886 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
887 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
888 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
890 #define EXTRACT_IFMT_MOVE_C_SPRV32_P2_VARS \
891 INT f_indir_pc__dword; \
897 /* Contents of trailing part of insn. */ \
900 #define EXTRACT_IFMT_MOVE_C_SPRV32_P2_CODE \
902 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
903 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0)); \
904 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
905 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
906 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
907 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
908 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
910 #define EXTRACT_IFMT_MOVE_SPR_MV32_VARS \
918 #define EXTRACT_IFMT_MOVE_SPR_MV32_CODE \
920 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
921 f_membit = EXTRACT_LSB0_UINT (insn, 16, 11, 1); \
922 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1); \
923 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
924 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
925 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
927 #define EXTRACT_IFMT_MOVE_SS_R_VARS \
934 #define EXTRACT_IFMT_MOVE_SS_R_CODE \
936 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
937 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
938 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
939 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
940 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
942 #define EXTRACT_IFMT_MOVE_R_SS_VARS \
949 #define EXTRACT_IFMT_MOVE_R_SS_CODE \
951 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
952 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
953 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
954 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
955 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
957 #define EXTRACT_IFMT_LAPC_D_VARS \
958 SI f_indir_pc__dword_pcrel; \
964 /* Contents of trailing part of insn. */ \
967 #define EXTRACT_IFMT_LAPC_D_CODE \
969 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
970 f_indir_pc__dword_pcrel = ((pc) + ((0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0)))); \
971 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
972 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
973 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
974 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
975 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
977 #define EXTRACT_IFMT_LAPCQ_VARS \
984 #define EXTRACT_IFMT_LAPCQ_CODE \
986 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
987 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
988 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
989 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
990 f_qo = ((pc) + (((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (1)))); \
992 #define EXTRACT_IFMT_TEST_M_B_M_VARS \
1000 #define EXTRACT_IFMT_TEST_M_B_M_CODE \
1002 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1003 f_membit = EXTRACT_LSB0_UINT (insn, 16, 11, 1); \
1004 f_memmode = EXTRACT_LSB0_UINT (insn, 16, 10, 1); \
1005 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1006 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1007 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1009 #define EXTRACT_IFMT_SWAP_VARS \
1015 unsigned int length;
1016 #define EXTRACT_IFMT_SWAP_CODE \
1018 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1019 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1020 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1021 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1022 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1024 #define EXTRACT_IFMT_ASRQ_VARS \
1030 unsigned int length;
1031 #define EXTRACT_IFMT_ASRQ_CODE \
1033 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1034 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1035 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1036 f_b5 = EXTRACT_LSB0_UINT (insn, 16, 5, 1); \
1037 f_u5 = EXTRACT_LSB0_UINT (insn, 16, 4, 5); \
1039 #define EXTRACT_IFMT_SETF_VARS \
1046 unsigned int length;
1047 #define EXTRACT_IFMT_SETF_CODE \
1049 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1050 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1051 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1052 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1053 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1054 f_dstsrc = ((((f_operand1) | (((f_operand2) << (4))))) & (255));\
1056 #define EXTRACT_IFMT_RFE_VARS \
1062 unsigned int length;
1063 #define EXTRACT_IFMT_RFE_CODE \
1065 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1066 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1067 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1068 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1069 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1071 #define EXTRACT_IFMT_BCC_B_VARS \
1078 unsigned int length;
1079 #define EXTRACT_IFMT_BCC_B_CODE \
1081 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1082 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1083 f_opcode_hi = EXTRACT_LSB0_UINT (insn, 16, 9, 2); \
1084 f_disp9_hi = EXTRACT_LSB0_SINT (insn, 16, 0, 1); \
1085 f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7); \
1089 tmp_abslo = ((f_disp9_lo) << (1));\
1090 tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));\
1091 f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_V32 ()) ? (0) : (2))));\
1094 #define EXTRACT_IFMT_BA_B_VARS \
1101 unsigned int length;
1102 #define EXTRACT_IFMT_BA_B_CODE \
1104 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1105 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1106 f_opcode_hi = EXTRACT_LSB0_UINT (insn, 16, 9, 2); \
1107 f_disp9_hi = EXTRACT_LSB0_SINT (insn, 16, 0, 1); \
1108 f_disp9_lo = EXTRACT_LSB0_UINT (insn, 16, 7, 7); \
1112 tmp_abslo = ((f_disp9_lo) << (1));\
1113 tmp_absval = ((((((f_disp9_hi) != (0))) ? ((~ (255))) : (0))) | (tmp_abslo));\
1114 f_disp9 = ((((pc) + (tmp_absval))) + (((GET_H_V32_V32 ()) ? (0) : (2))));\
1117 #define EXTRACT_IFMT_BCC_W_VARS \
1119 SI f_indir_pc__word_pcrel; \
1124 /* Contents of trailing part of insn. */ \
1126 unsigned int length;
1127 #define EXTRACT_IFMT_BCC_W_CODE \
1129 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
1130 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1131 f_indir_pc__word_pcrel = ((EXTHISI (((HI) (UINT) ((0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)))))) + (((pc) + (((GET_H_V32_V32 ()) ? (0) : (4)))))); \
1132 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1133 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1134 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1135 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1137 #define EXTRACT_IFMT_BA_W_VARS \
1139 SI f_indir_pc__word_pcrel; \
1144 /* Contents of trailing part of insn. */ \
1146 unsigned int length;
1147 #define EXTRACT_IFMT_BA_W_CODE \
1149 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
1150 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1151 f_indir_pc__word_pcrel = ((EXTHISI (((HI) (UINT) ((0|(EXTRACT_LSB0_UINT (word_1, 32, 15, 16) << 0)))))) + (((pc) + (((GET_H_V32_V32 ()) ? (0) : (4)))))); \
1152 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1153 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1154 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1155 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1157 #define EXTRACT_IFMT_JAS_C_VARS \
1158 INT f_indir_pc__dword; \
1164 /* Contents of trailing part of insn. */ \
1166 unsigned int length;
1167 #define EXTRACT_IFMT_JAS_C_CODE \
1169 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
1170 f_indir_pc__dword = (0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0)); \
1171 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1172 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1173 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1174 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1175 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1177 #define EXTRACT_IFMT_JUMP_P_VARS \
1183 unsigned int length;
1184 #define EXTRACT_IFMT_JUMP_P_CODE \
1186 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1187 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1188 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1189 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1190 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1192 #define EXTRACT_IFMT_BAS_C_VARS \
1193 SI f_indir_pc__dword_pcrel; \
1199 /* Contents of trailing part of insn. */ \
1201 unsigned int length;
1202 #define EXTRACT_IFMT_BAS_C_CODE \
1204 word_1 = GETIMEMUSI (current_cpu, pc + 2); \
1205 f_indir_pc__dword_pcrel = ((pc) + ((0|(EXTRACT_LSB0_UINT (word_1, 32, 31, 32) << 0)))); \
1206 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1207 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1208 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1209 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1210 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1212 #define EXTRACT_IFMT_BREAK_VARS \
1218 unsigned int length;
1219 #define EXTRACT_IFMT_BREAK_CODE \
1221 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1222 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1223 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1224 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1225 f_u4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1227 #define EXTRACT_IFMT_SCC_VARS \
1233 unsigned int length;
1234 #define EXTRACT_IFMT_SCC_CODE \
1236 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1237 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1238 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1239 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1240 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1242 #define EXTRACT_IFMT_ADDOQ_VARS \
1247 unsigned int length;
1248 #define EXTRACT_IFMT_ADDOQ_CODE \
1250 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1251 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1252 f_opcode_hi = EXTRACT_LSB0_UINT (insn, 16, 9, 2); \
1253 f_s8 = EXTRACT_LSB0_SINT (insn, 16, 7, 8); \
1255 #define EXTRACT_IFMT_FIDXI_VARS \
1261 unsigned int length;
1262 #define EXTRACT_IFMT_FIDXI_CODE \
1264 f_operand2 = EXTRACT_LSB0_UINT (insn, 16, 15, 4); \
1265 f_mode = EXTRACT_LSB0_UINT (insn, 16, 11, 2); \
1266 f_opcode = EXTRACT_LSB0_UINT (insn, 16, 9, 4); \
1267 f_size = EXTRACT_LSB0_UINT (insn, 16, 5, 2); \
1268 f_operand1 = EXTRACT_LSB0_UINT (insn, 16, 3, 4); \
1270 /* Collection of various things for the trace handler to use. */
1272 typedef struct trace_record {
1277 #endif /* CPU_CRISV32F_H */