1 |
/* Table of opcodes for the OpenRISC 1000 ISA. |
/* Table of opcodes for the OpenRISC 1000 ISA. |
2 |
Copyright 2002 Free Software Foundation, Inc. |
Copyright 2002, 2003 Free Software Foundation, Inc. |
3 |
Contributed by Damjan Lampret (lampret@opencores.org). |
Contributed by Damjan Lampret (lampret@opencores.org). |
4 |
|
|
5 |
This file is part of or1k_gen_isa, or1ksim, GDB and GAS. |
This file is part of or1k_gen_isa, or1ksim, GDB and GAS. |
27 |
#define NUM_UNSIGNED (0) |
#define NUM_UNSIGNED (0) |
28 |
#define NUM_SIGNED (1) |
#define NUM_SIGNED (1) |
29 |
|
|
|
#ifndef PARAMS |
|
|
#define PARAMS(x) x |
|
|
#endif |
|
|
|
|
30 |
#define MAX_GPRS 32 |
#define MAX_GPRS 32 |
31 |
#define PAGE_SIZE 4096 |
#define PAGE_SIZE 4096 |
32 |
#undef __HALF_WORD_INSN__ |
#undef __HALF_WORD_INSN__ |
67 |
|
|
68 |
/* Opcode and operand encoding. */ |
/* Opcode and operand encoding. */ |
69 |
char *encoding; |
char *encoding; |
70 |
void (*exec) PARAMS ((void)); |
void (*exec) (void); |
71 |
unsigned int flags; |
unsigned int flags; |
72 |
}; |
}; |
73 |
|
|
89 |
} **op_start; |
} **op_start; |
90 |
|
|
91 |
#ifdef HAS_EXECUTION |
#ifdef HAS_EXECUTION |
92 |
extern void l_invalid PARAMS ((void)); |
extern void l_invalid (void); |
93 |
extern void l_sfne PARAMS ((void)); |
extern void l_sfne (void); |
94 |
extern void l_bf PARAMS ((void)); |
extern void l_bf (void); |
95 |
extern void l_add PARAMS ((void)); |
extern void l_add (void); |
96 |
extern void l_sw PARAMS ((void)); |
extern void l_sw (void); |
97 |
extern void l_sb PARAMS ((void)); |
extern void l_sb (void); |
98 |
extern void l_sh PARAMS ((void)); |
extern void l_sh (void); |
99 |
extern void l_lwz PARAMS ((void)); |
extern void l_lwz (void); |
100 |
extern void l_lbs PARAMS ((void)); |
extern void l_lbs (void); |
101 |
extern void l_lbz PARAMS ((void)); |
extern void l_lbz (void); |
102 |
extern void l_lhs PARAMS ((void)); |
extern void l_lhs (void); |
103 |
extern void l_lhz PARAMS ((void)); |
extern void l_lhz (void); |
104 |
extern void l_movhi PARAMS ((void)); |
extern void l_movhi (void); |
105 |
extern void l_and PARAMS ((void)); |
extern void l_and (void); |
106 |
extern void l_or PARAMS ((void)); |
extern void l_or (void); |
107 |
extern void l_xor PARAMS ((void)); |
extern void l_xor (void); |
108 |
extern void l_sub PARAMS ((void)); |
extern void l_sub (void); |
109 |
extern void l_mul PARAMS ((void)); |
extern void l_mul (void); |
110 |
extern void l_div PARAMS ((void)); |
extern void l_div (void); |
111 |
extern void l_divu PARAMS ((void)); |
extern void l_divu (void); |
112 |
extern void l_sll PARAMS ((void)); |
extern void l_sll (void); |
113 |
extern void l_sra PARAMS ((void)); |
extern void l_sra (void); |
114 |
extern void l_srl PARAMS ((void)); |
extern void l_srl (void); |
115 |
extern void l_j PARAMS ((void)); |
extern void l_j (void); |
116 |
extern void l_jal PARAMS ((void)); |
extern void l_jal (void); |
117 |
extern void l_jalr PARAMS ((void)); |
extern void l_jalr (void); |
118 |
extern void l_jr PARAMS ((void)); |
extern void l_jr (void); |
119 |
extern void l_rfe PARAMS ((void)); |
extern void l_rfe (void); |
120 |
extern void l_nop PARAMS ((void)); |
extern void l_nop (void); |
121 |
extern void l_bnf PARAMS ((void)); |
extern void l_bnf (void); |
122 |
extern void l_sfeq PARAMS ((void)); |
extern void l_sfeq (void); |
123 |
extern void l_sfgts PARAMS ((void)); |
extern void l_sfgts (void); |
124 |
extern void l_sfges PARAMS ((void)); |
extern void l_sfges (void); |
125 |
extern void l_sflts PARAMS ((void)); |
extern void l_sflts (void); |
126 |
extern void l_sfles PARAMS ((void)); |
extern void l_sfles (void); |
127 |
extern void l_sfgtu PARAMS ((void)); |
extern void l_sfgtu (void); |
128 |
extern void l_sfgeu PARAMS ((void)); |
extern void l_sfgeu (void); |
129 |
extern void l_sfltu PARAMS ((void)); |
extern void l_sfltu (void); |
130 |
extern void l_sfleu PARAMS ((void)); |
extern void l_sfleu (void); |
131 |
extern void l_mtspr PARAMS ((void)); |
extern void l_mtspr (void); |
132 |
extern void l_mfspr PARAMS ((void)); |
extern void l_mfspr (void); |
133 |
extern void l_sys PARAMS ((void)); |
extern void l_sys (void); |
134 |
extern void l_trap PARAMS ((void)); /* CZ 21/06/01. */ |
extern void l_trap (void); /* CZ 21/06/01. */ |
135 |
extern void l_macrc PARAMS ((void)); |
extern void l_macrc (void); |
136 |
extern void l_mac PARAMS ((void)); |
extern void l_mac (void); |
137 |
extern void l_msb PARAMS ((void)); |
extern void l_msb (void); |
138 |
extern void l_invalid PARAMS ((void)); |
extern void l_invalid (void); |
139 |
extern void l_cust1 PARAMS ((void)); |
extern void l_cust1 (void); |
140 |
extern void l_cust2 PARAMS ((void)); |
extern void l_cust2 (void); |
141 |
extern void l_cust3 PARAMS ((void)); |
extern void l_cust3 (void); |
142 |
extern void l_cust4 PARAMS ((void)); |
extern void l_cust4 (void); |
143 |
#endif |
#endif |
144 |
extern void l_none PARAMS ((void)); |
extern void l_none (void); |
145 |
|
|
146 |
extern const struct or32_letter or32_letters[]; |
extern const struct or32_letter or32_letters[]; |
147 |
|
|
150 |
extern const unsigned int or32_num_opcodes; |
extern const unsigned int or32_num_opcodes; |
151 |
|
|
152 |
/* Calculates instruction length in bytes. Always 4 for OR32. */ |
/* Calculates instruction length in bytes. Always 4 for OR32. */ |
153 |
extern int insn_len PARAMS ((int)); |
extern int insn_len (int); |
154 |
|
|
155 |
/* Is individual insn's operand signed or unsigned? */ |
/* Is individual insn's operand signed or unsigned? */ |
156 |
extern int letter_signed PARAMS ((char)); |
extern int letter_signed (char); |
157 |
|
|
158 |
/* Number of letters in the individual lettered operand. */ |
/* Number of letters in the individual lettered operand. */ |
159 |
extern int letter_range PARAMS ((char)); |
extern int letter_range (char); |
160 |
|
|
161 |
/* MM: Returns index of given instruction name. */ |
/* MM: Returns index of given instruction name. */ |
162 |
extern int insn_index PARAMS ((char *)); |
extern int insn_index (char *); |
163 |
|
|
164 |
/* MM: Returns instruction name from index. */ |
/* MM: Returns instruction name from index. */ |
165 |
extern const char *insn_name PARAMS ((int)); |
extern const char *insn_name (int); |
166 |
|
|
167 |
/* MM: Constructs new FSM, based on or32_opcodes. */ |
/* MM: Constructs new FSM, based on or32_opcodes. */ |
168 |
extern void build_automata PARAMS ((void)); |
extern void build_automata (void); |
169 |
|
|
170 |
/* MM: Destructs FSM. */ |
/* MM: Destructs FSM. */ |
171 |
extern void destruct_automata PARAMS ((void)); |
extern void destruct_automata (void); |
172 |
|
|
173 |
/* MM: Decodes instruction using FSM. Call build_automata first. */ |
/* MM: Decodes instruction using FSM. Call build_automata first. */ |
174 |
extern int insn_decode PARAMS ((unsigned int)); |
extern int insn_decode (unsigned int); |
175 |
|
|
176 |
/* Disassemble one instruction from insn to disassemble. |
/* Disassemble one instruction from insn to disassemble. |
177 |
Return the size of the instruction. */ |
Return the size of the instruction. */ |
178 |
int disassemble_insn PARAMS ((unsigned long)); |
int disassemble_insn (unsigned long); |
179 |
|
|
180 |
#endif |
#endif |