1 /* Decode header for m32rbf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
7 This file is part of the GNU Simulators.
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)
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.
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.
25 #ifndef M32RBF_DECODE_H
26 #define M32RBF_DECODE_H
28 /* Run-time computed instruction descriptor. */
31 #if WITH_SEM_SWITCH_FULL
36 SEMANTIC_FN
*sem_full
;
39 #if WITH_SEM_SWITCH_FAST
44 SEMANTIC_FN
*sem_fast
;
47 /* Instruction number (index in IDESC table, profile table).
48 Also used to switch on in non-gcc semantic switches. */
51 /* opcode table data */
52 const CGEN_INSN
*opcode
;
54 /* profiling/modelling support */
55 const INSN_TIMING
*timing
;
58 extern const IDESC
*m32rbf_decode (SIM_CPU
*, IADDR
,
59 CGEN_INSN_INT
, CGEN_INSN_INT
,
62 /* Enum declaration for instructions in cpu family m32rbf. */
63 typedef enum m32rbf_insn_type
{
64 M32RBF_INSN_X_INVALID
, M32RBF_INSN_X_AFTER
, M32RBF_INSN_X_BEFORE
, M32RBF_INSN_X_CTI_CHAIN
65 , M32RBF_INSN_X_CHAIN
, M32RBF_INSN_X_BEGIN
, M32RBF_INSN_ADD
, M32RBF_INSN_ADD3
66 , M32RBF_INSN_AND
, M32RBF_INSN_AND3
, M32RBF_INSN_OR
, M32RBF_INSN_OR3
67 , M32RBF_INSN_XOR
, M32RBF_INSN_XOR3
, M32RBF_INSN_ADDI
, M32RBF_INSN_ADDV
68 , M32RBF_INSN_ADDV3
, M32RBF_INSN_ADDX
, M32RBF_INSN_BC8
, M32RBF_INSN_BC24
69 , M32RBF_INSN_BEQ
, M32RBF_INSN_BEQZ
, M32RBF_INSN_BGEZ
, M32RBF_INSN_BGTZ
70 , M32RBF_INSN_BLEZ
, M32RBF_INSN_BLTZ
, M32RBF_INSN_BNEZ
, M32RBF_INSN_BL8
71 , M32RBF_INSN_BL24
, M32RBF_INSN_BNC8
, M32RBF_INSN_BNC24
, M32RBF_INSN_BNE
72 , M32RBF_INSN_BRA8
, M32RBF_INSN_BRA24
, M32RBF_INSN_CMP
, M32RBF_INSN_CMPI
73 , M32RBF_INSN_CMPU
, M32RBF_INSN_CMPUI
, M32RBF_INSN_DIV
, M32RBF_INSN_DIVU
74 , M32RBF_INSN_REM
, M32RBF_INSN_REMU
, M32RBF_INSN_JL
, M32RBF_INSN_JMP
75 , M32RBF_INSN_LD
, M32RBF_INSN_LD_D
, M32RBF_INSN_LDB
, M32RBF_INSN_LDB_D
76 , M32RBF_INSN_LDH
, M32RBF_INSN_LDH_D
, M32RBF_INSN_LDUB
, M32RBF_INSN_LDUB_D
77 , M32RBF_INSN_LDUH
, M32RBF_INSN_LDUH_D
, M32RBF_INSN_LD_PLUS
, M32RBF_INSN_LD24
78 , M32RBF_INSN_LDI8
, M32RBF_INSN_LDI16
, M32RBF_INSN_LOCK
, M32RBF_INSN_MACHI
79 , M32RBF_INSN_MACLO
, M32RBF_INSN_MACWHI
, M32RBF_INSN_MACWLO
, M32RBF_INSN_MUL
80 , M32RBF_INSN_MULHI
, M32RBF_INSN_MULLO
, M32RBF_INSN_MULWHI
, M32RBF_INSN_MULWLO
81 , M32RBF_INSN_MV
, M32RBF_INSN_MVFACHI
, M32RBF_INSN_MVFACLO
, M32RBF_INSN_MVFACMI
82 , M32RBF_INSN_MVFC
, M32RBF_INSN_MVTACHI
, M32RBF_INSN_MVTACLO
, M32RBF_INSN_MVTC
83 , M32RBF_INSN_NEG
, M32RBF_INSN_NOP
, M32RBF_INSN_NOT
, M32RBF_INSN_RAC
84 , M32RBF_INSN_RACH
, M32RBF_INSN_RTE
, M32RBF_INSN_SETH
, M32RBF_INSN_SLL
85 , M32RBF_INSN_SLL3
, M32RBF_INSN_SLLI
, M32RBF_INSN_SRA
, M32RBF_INSN_SRA3
86 , M32RBF_INSN_SRAI
, M32RBF_INSN_SRL
, M32RBF_INSN_SRL3
, M32RBF_INSN_SRLI
87 , M32RBF_INSN_ST
, M32RBF_INSN_ST_D
, M32RBF_INSN_STB
, M32RBF_INSN_STB_D
88 , M32RBF_INSN_STH
, M32RBF_INSN_STH_D
, M32RBF_INSN_ST_PLUS
, M32RBF_INSN_ST_MINUS
89 , M32RBF_INSN_SUB
, M32RBF_INSN_SUBV
, M32RBF_INSN_SUBX
, M32RBF_INSN_TRAP
90 , M32RBF_INSN_UNLOCK
, M32RBF_INSN_MAX
93 #if ! WITH_SEM_SWITCH_FULL
94 #define SEMFULL(fn) extern SEMANTIC_FN CONCAT3 (m32rbf,_sem_,fn);
99 #if ! WITH_SEM_SWITCH_FAST
100 #define SEMFAST(fn) extern SEMANTIC_FN CONCAT3 (m32rbf,_semf_,fn);
105 #define SEM(fn) SEMFULL (fn) SEMFAST (fn)
107 /* The function version of the before/after handlers is always needed,
108 so we always want the SEMFULL declaration of them. */
109 extern SEMANTIC_FN
CONCAT3 (m32rbf
,_sem_
,x_before
);
110 extern SEMANTIC_FN
CONCAT3 (m32rbf
,_sem_
,x_after
);
222 /* Function unit handlers (user written). */
224 extern int m32rbf_model_m32r_d_u_store (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*src1*/, INT
/*src2*/);
225 extern int m32rbf_model_m32r_d_u_load (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*sr*/, INT
/*dr*/);
226 extern int m32rbf_model_m32r_d_u_cti (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*sr*/);
227 extern int m32rbf_model_m32r_d_u_mac (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*src1*/, INT
/*src2*/);
228 extern int m32rbf_model_m32r_d_u_cmp (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*src1*/, INT
/*src2*/);
229 extern int m32rbf_model_m32r_d_u_exec (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/, INT
/*sr*/, INT
/*sr2*/, INT
/*dr*/);
230 extern int m32rbf_model_test_u_exec (SIM_CPU
*, const IDESC
*, int /*unit_num*/, int /*referenced*/);
232 /* Profiling before/after handlers (user written) */
234 extern void m32rbf_model_insn_before (SIM_CPU
*, int /*first_p*/);
235 extern void m32rbf_model_insn_after (SIM_CPU
*, int /*last_p*/, int /*cycles*/);
237 #endif /* M32RBF_DECODE_H */