xref: /netbsd-src/external/gpl3/gdb.old/dist/sim/m32r/decode.h (revision 8b657b0747480f8989760d71343d6dd33f8d4cf9)
1a5a4af3bSchristos /* Decode header for m32rbf.
2a5a4af3bSchristos 
3a5a4af3bSchristos THIS FILE IS MACHINE GENERATED WITH CGEN.
4a5a4af3bSchristos 
5*8b657b07Schristos Copyright 1996-2023 Free Software Foundation, Inc.
6a5a4af3bSchristos 
7a5a4af3bSchristos This file is part of the GNU simulators.
8a5a4af3bSchristos 
9a5a4af3bSchristos    This file is free software; you can redistribute it and/or modify
10a5a4af3bSchristos    it under the terms of the GNU General Public License as published by
11a5a4af3bSchristos    the Free Software Foundation; either version 3, or (at your option)
12a5a4af3bSchristos    any later version.
13a5a4af3bSchristos 
14a5a4af3bSchristos    It is distributed in the hope that it will be useful, but WITHOUT
15a5a4af3bSchristos    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16a5a4af3bSchristos    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
17a5a4af3bSchristos    License for more details.
18a5a4af3bSchristos 
19a5a4af3bSchristos    You should have received a copy of the GNU General Public License along
20a5a4af3bSchristos    with this program; if not, see <http://www.gnu.org/licenses/>.
21a5a4af3bSchristos 
22a5a4af3bSchristos */
23a5a4af3bSchristos 
24a5a4af3bSchristos #ifndef M32RBF_DECODE_H
25a5a4af3bSchristos #define M32RBF_DECODE_H
26a5a4af3bSchristos 
27a5a4af3bSchristos extern const IDESC *m32rbf_decode (SIM_CPU *, IADDR,
28a5a4af3bSchristos                                   CGEN_INSN_WORD, CGEN_INSN_WORD,
29a5a4af3bSchristos                                   ARGBUF *);
30a5a4af3bSchristos extern void m32rbf_init_idesc_table (SIM_CPU *);
31a5a4af3bSchristos extern void m32rbf_sem_init_idesc_table (SIM_CPU *);
32a5a4af3bSchristos extern void m32rbf_semf_init_idesc_table (SIM_CPU *);
33a5a4af3bSchristos 
34a5a4af3bSchristos /* Enum declaration for instructions in cpu family m32rbf.  */
35a5a4af3bSchristos typedef enum m32rbf_insn_type {
36a5a4af3bSchristos   M32RBF_INSN_X_INVALID, M32RBF_INSN_X_AFTER, M32RBF_INSN_X_BEFORE, M32RBF_INSN_X_CTI_CHAIN
37a5a4af3bSchristos  , M32RBF_INSN_X_CHAIN, M32RBF_INSN_X_BEGIN, M32RBF_INSN_ADD, M32RBF_INSN_ADD3
38a5a4af3bSchristos  , M32RBF_INSN_AND, M32RBF_INSN_AND3, M32RBF_INSN_OR, M32RBF_INSN_OR3
39a5a4af3bSchristos  , M32RBF_INSN_XOR, M32RBF_INSN_XOR3, M32RBF_INSN_ADDI, M32RBF_INSN_ADDV
40a5a4af3bSchristos  , M32RBF_INSN_ADDV3, M32RBF_INSN_ADDX, M32RBF_INSN_BC8, M32RBF_INSN_BC24
41a5a4af3bSchristos  , M32RBF_INSN_BEQ, M32RBF_INSN_BEQZ, M32RBF_INSN_BGEZ, M32RBF_INSN_BGTZ
42a5a4af3bSchristos  , M32RBF_INSN_BLEZ, M32RBF_INSN_BLTZ, M32RBF_INSN_BNEZ, M32RBF_INSN_BL8
43a5a4af3bSchristos  , M32RBF_INSN_BL24, M32RBF_INSN_BNC8, M32RBF_INSN_BNC24, M32RBF_INSN_BNE
44a5a4af3bSchristos  , M32RBF_INSN_BRA8, M32RBF_INSN_BRA24, M32RBF_INSN_CMP, M32RBF_INSN_CMPI
45a5a4af3bSchristos  , M32RBF_INSN_CMPU, M32RBF_INSN_CMPUI, M32RBF_INSN_DIV, M32RBF_INSN_DIVU
46a5a4af3bSchristos  , M32RBF_INSN_REM, M32RBF_INSN_REMU, M32RBF_INSN_JL, M32RBF_INSN_JMP
47a5a4af3bSchristos  , M32RBF_INSN_LD, M32RBF_INSN_LD_D, M32RBF_INSN_LDB, M32RBF_INSN_LDB_D
48a5a4af3bSchristos  , M32RBF_INSN_LDH, M32RBF_INSN_LDH_D, M32RBF_INSN_LDUB, M32RBF_INSN_LDUB_D
49a5a4af3bSchristos  , M32RBF_INSN_LDUH, M32RBF_INSN_LDUH_D, M32RBF_INSN_LD_PLUS, M32RBF_INSN_LD24
50a5a4af3bSchristos  , M32RBF_INSN_LDI8, M32RBF_INSN_LDI16, M32RBF_INSN_LOCK, M32RBF_INSN_MACHI
51a5a4af3bSchristos  , M32RBF_INSN_MACLO, M32RBF_INSN_MACWHI, M32RBF_INSN_MACWLO, M32RBF_INSN_MUL
52a5a4af3bSchristos  , M32RBF_INSN_MULHI, M32RBF_INSN_MULLO, M32RBF_INSN_MULWHI, M32RBF_INSN_MULWLO
53a5a4af3bSchristos  , M32RBF_INSN_MV, M32RBF_INSN_MVFACHI, M32RBF_INSN_MVFACLO, M32RBF_INSN_MVFACMI
54a5a4af3bSchristos  , M32RBF_INSN_MVFC, M32RBF_INSN_MVTACHI, M32RBF_INSN_MVTACLO, M32RBF_INSN_MVTC
55a5a4af3bSchristos  , M32RBF_INSN_NEG, M32RBF_INSN_NOP, M32RBF_INSN_NOT, M32RBF_INSN_RAC
56a5a4af3bSchristos  , M32RBF_INSN_RACH, M32RBF_INSN_RTE, M32RBF_INSN_SETH, M32RBF_INSN_SLL
57a5a4af3bSchristos  , M32RBF_INSN_SLL3, M32RBF_INSN_SLLI, M32RBF_INSN_SRA, M32RBF_INSN_SRA3
58a5a4af3bSchristos  , M32RBF_INSN_SRAI, M32RBF_INSN_SRL, M32RBF_INSN_SRL3, M32RBF_INSN_SRLI
59a5a4af3bSchristos  , M32RBF_INSN_ST, M32RBF_INSN_ST_D, M32RBF_INSN_STB, M32RBF_INSN_STB_D
60a5a4af3bSchristos  , M32RBF_INSN_STH, M32RBF_INSN_STH_D, M32RBF_INSN_ST_PLUS, M32RBF_INSN_ST_MINUS
61a5a4af3bSchristos  , M32RBF_INSN_SUB, M32RBF_INSN_SUBV, M32RBF_INSN_SUBX, M32RBF_INSN_TRAP
62a5a4af3bSchristos  , M32RBF_INSN_UNLOCK, M32RBF_INSN_CLRPSW, M32RBF_INSN_SETPSW, M32RBF_INSN_BSET
63a5a4af3bSchristos  , M32RBF_INSN_BCLR, M32RBF_INSN_BTST, M32RBF_INSN__MAX
64a5a4af3bSchristos } M32RBF_INSN_TYPE;
65a5a4af3bSchristos 
66a5a4af3bSchristos /* Enum declaration for semantic formats in cpu family m32rbf.  */
67a5a4af3bSchristos typedef enum m32rbf_sfmt_type {
68a5a4af3bSchristos   M32RBF_SFMT_EMPTY, M32RBF_SFMT_ADD, M32RBF_SFMT_ADD3, M32RBF_SFMT_AND3
69a5a4af3bSchristos  , M32RBF_SFMT_OR3, M32RBF_SFMT_ADDI, M32RBF_SFMT_ADDV, M32RBF_SFMT_ADDV3
70a5a4af3bSchristos  , M32RBF_SFMT_ADDX, M32RBF_SFMT_BC8, M32RBF_SFMT_BC24, M32RBF_SFMT_BEQ
71a5a4af3bSchristos  , M32RBF_SFMT_BEQZ, M32RBF_SFMT_BL8, M32RBF_SFMT_BL24, M32RBF_SFMT_BRA8
72a5a4af3bSchristos  , M32RBF_SFMT_BRA24, M32RBF_SFMT_CMP, M32RBF_SFMT_CMPI, M32RBF_SFMT_DIV
73a5a4af3bSchristos  , M32RBF_SFMT_JL, M32RBF_SFMT_JMP, M32RBF_SFMT_LD, M32RBF_SFMT_LD_D
74a5a4af3bSchristos  , M32RBF_SFMT_LDB, M32RBF_SFMT_LDB_D, M32RBF_SFMT_LDH, M32RBF_SFMT_LDH_D
75a5a4af3bSchristos  , M32RBF_SFMT_LD_PLUS, M32RBF_SFMT_LD24, M32RBF_SFMT_LDI8, M32RBF_SFMT_LDI16
76a5a4af3bSchristos  , M32RBF_SFMT_LOCK, M32RBF_SFMT_MACHI, M32RBF_SFMT_MULHI, M32RBF_SFMT_MV
77a5a4af3bSchristos  , M32RBF_SFMT_MVFACHI, M32RBF_SFMT_MVFC, M32RBF_SFMT_MVTACHI, M32RBF_SFMT_MVTC
78a5a4af3bSchristos  , M32RBF_SFMT_NOP, M32RBF_SFMT_RAC, M32RBF_SFMT_RTE, M32RBF_SFMT_SETH
79a5a4af3bSchristos  , M32RBF_SFMT_SLL3, M32RBF_SFMT_SLLI, M32RBF_SFMT_ST, M32RBF_SFMT_ST_D
80a5a4af3bSchristos  , M32RBF_SFMT_STB, M32RBF_SFMT_STB_D, M32RBF_SFMT_STH, M32RBF_SFMT_STH_D
81a5a4af3bSchristos  , M32RBF_SFMT_ST_PLUS, M32RBF_SFMT_TRAP, M32RBF_SFMT_UNLOCK, M32RBF_SFMT_CLRPSW
82a5a4af3bSchristos  , M32RBF_SFMT_SETPSW, M32RBF_SFMT_BSET, M32RBF_SFMT_BTST
83a5a4af3bSchristos } M32RBF_SFMT_TYPE;
84a5a4af3bSchristos 
85a5a4af3bSchristos /* Function unit handlers (user written).  */
86a5a4af3bSchristos 
87a5a4af3bSchristos extern int m32rbf_model_m32r_d_u_store (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*src1*/, INT /*src2*/);
88a5a4af3bSchristos extern int m32rbf_model_m32r_d_u_load (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*sr*/, INT /*dr*/);
89a5a4af3bSchristos extern int m32rbf_model_m32r_d_u_cti (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*sr*/);
90a5a4af3bSchristos extern int m32rbf_model_m32r_d_u_mac (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*src1*/, INT /*src2*/);
91a5a4af3bSchristos extern int m32rbf_model_m32r_d_u_cmp (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*src1*/, INT /*src2*/);
92a5a4af3bSchristos extern int m32rbf_model_m32r_d_u_exec (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/, INT /*sr*/, INT /*dr*/, INT /*dr*/);
93a5a4af3bSchristos extern int m32rbf_model_test_u_exec (SIM_CPU *, const IDESC *, int /*unit_num*/, int /*referenced*/);
94a5a4af3bSchristos 
95a5a4af3bSchristos /* Profiling before/after handlers (user written) */
96a5a4af3bSchristos 
97a5a4af3bSchristos extern void m32rbf_model_insn_before (SIM_CPU *, int /*first_p*/);
98a5a4af3bSchristos extern void m32rbf_model_insn_after (SIM_CPU *, int /*last_p*/, int /*cycles*/);
99a5a4af3bSchristos 
100a5a4af3bSchristos #endif /* M32RBF_DECODE_H */
101