Lines Matching full:isa

1 /* Configurable Xtensa ISA support.
25 #include "xtensa-isa.h"
26 #include "xtensa-isa-internal.h"
43 xtensa_isa isa; in xtensa_isa_init() local
46 isa = xtensa_load_isa (0); in xtensa_isa_init()
47 if (isa == 0) in xtensa_isa_init()
49 fprintf (stderr, "Failed to initialize Xtensa base ISA module\n"); in xtensa_isa_init()
55 if (!xtensa_extend_isa (isa, mod)) in xtensa_isa_init()
57 fprintf (stderr, "Failed to initialize Xtensa TIE ISA module\n"); in xtensa_isa_init()
62 return isa; in xtensa_isa_init()
65 /* ISA information. */
68 xtensa_check_isa_config (xtensa_isa_internal *isa, in xtensa_check_isa_config() argument
75 fprintf (stderr, "Error: Empty configuration table in ISA DLL\n"); in xtensa_check_isa_config()
82 if (isa->num_modules == 0) in xtensa_check_isa_config()
86 isa->config = config_table; in xtensa_check_isa_config()
87 isa->has_density = 1; /* Default to have density option. */ in xtensa_check_isa_config()
93 isa->is_big_endian = in xtensa_check_isa_config()
99 isa->has_density = atoi (config_table[i].param_value); in xtensa_check_isa_config()
105 "configuration table in ISA DLL\n"); in xtensa_check_isa_config()
116 and we would then add those to isa->config so that subsequent modules in xtensa_check_isa_config()
121 for (j = 0; isa->config[j].param_name; j++) in xtensa_check_isa_config()
123 if (!strcmp (config_table[i].param_name, isa->config[j].param_name)) in xtensa_check_isa_config()
130 int basecnt = atoi (isa->config[j].param_value); in xtensa_check_isa_config()
135 isa->config[j].param_value); in xtensa_check_isa_config()
147 isa->config[j].param_value); in xtensa_check_isa_config()
160 xtensa_add_isa (xtensa_isa_internal *isa, libisa_module_specifier libisa) in xtensa_add_isa() argument
175 || (!get_config_table_fn && isa->num_modules == 0)) in xtensa_add_isa()
179 && !xtensa_check_isa_config (isa, get_config_table_fn ())) in xtensa_add_isa()
182 prev_num_opcodes = isa->num_opcodes; in xtensa_add_isa()
185 isa->num_opcodes += new_num_opcodes; in xtensa_add_isa()
186 isa->opcode_table = (xtensa_opcode_internal **) in xtensa_add_isa()
187 realloc (isa->opcode_table, isa->num_opcodes * in xtensa_add_isa()
189 isa->opname_lookup_table = (opname_lookup_entry *) in xtensa_add_isa()
190 realloc (isa->opname_lookup_table, isa->num_opcodes * in xtensa_add_isa()
195 insn_size = isa->insn_size; in xtensa_add_isa()
200 isa->opcode_table[newopc] = intopc; in xtensa_add_isa()
201 isa->opname_lookup_table[newopc].key = intopc->name; in xtensa_add_isa()
202 isa->opname_lookup_table[newopc].opcode = newopc; in xtensa_add_isa()
207 isa->insn_size = insn_size; in xtensa_add_isa()
208 isa->insnbuf_size = ((isa->insn_size + sizeof (xtensa_insnbuf_word) - 1) / in xtensa_add_isa()
211 qsort (isa->opname_lookup_table, isa->num_opcodes, in xtensa_add_isa()
215 for (opc = 1; opc < isa->num_opcodes; opc++) in xtensa_add_isa()
217 if (!opname_lookup_compare (&isa->opname_lookup_table[opc-1], in xtensa_add_isa()
218 &isa->opname_lookup_table[opc])) in xtensa_add_isa()
221 isa->opname_lookup_table[opc].key); in xtensa_add_isa()
226 this_module = isa->num_modules; in xtensa_add_isa()
227 isa->num_modules += 1; in xtensa_add_isa()
229 isa->module_opcode_base = (int *) realloc (isa->module_opcode_base, in xtensa_add_isa()
230 isa->num_modules * sizeof (int)); in xtensa_add_isa()
231 isa->module_decode_fn = (xtensa_insn_decode_fn *) in xtensa_add_isa()
232 realloc (isa->module_decode_fn, isa->num_modules * in xtensa_add_isa()
235 isa->module_opcode_base[this_module] = prev_num_opcodes; in xtensa_add_isa()
236 isa->module_decode_fn[this_module] = decode_insn_fn; in xtensa_add_isa()
238 xtensa_default_isa = isa; in xtensa_add_isa()
247 xtensa_isa_internal *isa; in xtensa_load_isa() local
249 isa = (xtensa_isa_internal *) malloc (sizeof (xtensa_isa_internal)); in xtensa_load_isa()
250 memset (isa, 0, sizeof (xtensa_isa_internal)); in xtensa_load_isa()
251 if (!xtensa_add_isa (isa, libisa)) in xtensa_load_isa()
253 xtensa_isa_free (isa); in xtensa_load_isa()
256 return (xtensa_isa) isa; in xtensa_load_isa()
261 xtensa_extend_isa (xtensa_isa isa, libisa_module_specifier libisa) in xtensa_extend_isa() argument
263 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_extend_isa()
269 xtensa_isa_free (xtensa_isa isa) in xtensa_isa_free() argument
271 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_isa_free()
285 xtensa_insn_maxlength (xtensa_isa isa) in xtensa_insn_maxlength() argument
287 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_insn_maxlength()
293 xtensa_insnbuf_size (xtensa_isa isa) in xtensa_insnbuf_size() argument
295 xtensa_isa_internal *intisa = (xtensa_isa_internal *)isa; in xtensa_insnbuf_size()
301 xtensa_num_opcodes (xtensa_isa isa) in xtensa_num_opcodes() argument
303 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_num_opcodes()
309 xtensa_opcode_lookup (xtensa_isa isa, const char *opname) in xtensa_opcode_lookup() argument
311 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_opcode_lookup()
323 xtensa_decode_insn (xtensa_isa isa, const xtensa_insnbuf insn) in xtensa_decode_insn() argument
325 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_decode_insn()
339 xtensa_encode_insn (xtensa_isa isa, xtensa_opcode opc, xtensa_insnbuf insn) in xtensa_encode_insn() argument
341 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_encode_insn()
360 xtensa_opcode_name (xtensa_isa isa, xtensa_opcode opc) in xtensa_opcode_name() argument
362 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_opcode_name()
368 xtensa_insn_length (xtensa_isa isa, xtensa_opcode opc) in xtensa_insn_length() argument
370 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_insn_length()
376 xtensa_insn_length_from_first_byte (xtensa_isa isa, char first_byte) in xtensa_insn_length_from_first_byte() argument
378 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_insn_length_from_first_byte()
385 xtensa_num_operands (xtensa_isa isa, xtensa_opcode opc) in xtensa_num_operands() argument
387 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_num_operands()
393 xtensa_get_operand (xtensa_isa isa, xtensa_opcode opc, int opnd) in xtensa_get_operand() argument
395 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_get_operand()
484 xtensa_insnbuf_alloc (xtensa_isa isa) in xtensa_insnbuf_alloc() argument
486 return (xtensa_insnbuf) malloc (xtensa_insnbuf_size (isa) * in xtensa_insnbuf_alloc()
524 xtensa_insnbuf_to_chars (xtensa_isa isa, const xtensa_insnbuf insn, char *cp) in xtensa_insnbuf_to_chars() argument
526 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_insnbuf_to_chars()
544 opc = xtensa_decode_insn (isa, insn); in xtensa_insnbuf_to_chars()
548 byte_count = xtensa_insn_length (isa, opc); in xtensa_insnbuf_to_chars()
565 xtensa_insnbuf_from_chars (xtensa_isa isa, xtensa_insnbuf insn, const char* cp) in xtensa_insnbuf_from_chars() argument
567 xtensa_isa_internal *intisa = (xtensa_isa_internal *) isa; in xtensa_insnbuf_from_chars()
583 memset (insn, 0, xtensa_insnbuf_size (isa) * sizeof (xtensa_insnbuf_word)); in xtensa_insnbuf_from_chars()