aboutsummaryrefslogtreecommitdiff
path: root/sim/igen/gen-idecode.c
diff options
context:
space:
mode:
Diffstat (limited to 'sim/igen/gen-idecode.c')
-rw-r--r--sim/igen/gen-idecode.c321
1 files changed, 0 insertions, 321 deletions
diff --git a/sim/igen/gen-idecode.c b/sim/igen/gen-idecode.c
index 1d4f631..cb5ae54 100644
--- a/sim/igen/gen-idecode.c
+++ b/sim/igen/gen-idecode.c
@@ -706,327 +706,6 @@ print_idecode_body (lf *file, gen_entry *table, const char *result)
/****************************************************************/
-#if 0
-static void
-print_jump (lf *file, int is_tail)
-{
- if (is_tail)
- {
- lf_putstr (file, "if (keep_running != NULL && !*keep_running)\n");
- lf_putstr (file, " cpu_halt(cpu, nia, was_continuing, 0/*na*/);\n");
- }
-
- if (!options.generate_smp)
- {
- lf_putstr (file, "if (WITH_EVENTS) {\n");
- lf_putstr (file, " if (event_queue_tick(events)) {\n");
- lf_putstr (file, " cpu_set_program_counter(cpu, nia);\n");
- lf_putstr (file, " event_queue_process(events);\n");
- lf_putstr (file, " nia = cpu_get_program_counter(cpu);\n");
- lf_putstr (file, " }\n");
- lf_putstr (file, "}\n");
- }
-
- if (options.generate_smp)
- {
- if (is_tail)
- {
- lf_putstr (file, "cpu_set_program_counter(cpu, nia);\n");
- }
- lf_putstr (file, "if (WITH_EVENTS) {\n");
- lf_putstr (file, " current_cpu += 1;\n");
- lf_putstr (file, " if (current_cpu >= nr_cpus) {\n");
- lf_putstr (file, " if (event_queue_tick(events)) {\n");
- lf_putstr (file, " event_queue_process(events);\n");
- lf_putstr (file, " }\n");
- lf_putstr (file, " current_cpu = 0;\n");
- lf_putstr (file, " }\n");
- lf_putstr (file, "}\n");
- lf_putstr (file, "else {\n");
- lf_putstr (file, " current_cpu = (current_cpu + 1) % nr_cpus;\n");
- lf_putstr (file, "}\n");
- lf_putstr (file, "cpu = cpus[current_cpu];\n");
- lf_putstr (file, "nia = cpu_get_program_counter(cpu);\n");
- }
-
- if (options.gen.icache)
- {
- lf_putstr (file, "cache_entry = cpu_icache_entry(cpu, nia);\n");
- lf_putstr (file, "if (cache_entry->address == nia) {\n");
- lf_putstr (file, " /* cache hit */\n");
- lf_putstr (file, " goto *cache_entry->semantic;\n");
- lf_putstr (file, "}\n");
- if (is_tail)
- {
- lf_putstr (file, "goto cache_miss;\n");
- }
- }
-
- if (!options.gen.icache && is_tail)
- {
- lf_printf (file, "goto idecode;\n");
- }
-
-}
-#endif
-
-
-
-#if 0
-static void
-print_jump_insn (lf *file,
- insn_entry * instruction,
- insn_bits * expanded_bits,
- opcode_field *opcodes, cache_entry *cache_rules)
-{
-
- /* what we are for the moment */
- lf_printf (file, "\n");
- print_my_defines (file, expanded_bits, instruction->name);
-
- /* output the icache entry */
- if (options.gen.icache)
- {
- lf_printf (file, "\n");
- lf_indent (file, -1);
- print_function_name (file,
- instruction->name,
- expanded_bits, function_name_prefix_icache);
- lf_printf (file, ":\n");
- lf_indent (file, +1);
- lf_printf (file, "{\n");
- lf_indent (file, +2);
- lf_putstr (file, "const unsigned_word cia = nia;\n");
- print_itrace (file, instruction, 1 /*putting-value-in-cache */ );
- print_idecode_validate (file, instruction, opcodes);
- lf_printf (file, "\n");
- lf_printf (file, "{\n");
- lf_indent (file, +2);
- print_icache_body (file, instruction, expanded_bits, cache_rules, 0, /*use_defines */
- put_values_in_icache);
- lf_printf (file, "cache_entry->address = nia;\n");
- lf_printf (file, "cache_entry->semantic = &&");
- print_function_name (file,
- instruction->name,
- expanded_bits, function_name_prefix_semantics);
- lf_printf (file, ";\n");
- if (options.gen.semantic_icache)
- {
- print_semantic_body (file, instruction, expanded_bits, opcodes);
- print_jump (file, 1 /*is-tail */ );
- }
- else
- {
- lf_printf (file, "/* goto ");
- print_function_name (file,
- instruction->name,
- expanded_bits, function_name_prefix_semantics);
- lf_printf (file, "; */\n");
- }
- lf_indent (file, -2);
- lf_putstr (file, "}\n");
- lf_indent (file, -2);
- lf_printf (file, "}\n");
- }
-
- /* print the semantics */
- lf_printf (file, "\n");
- lf_indent (file, -1);
- print_function_name (file,
- instruction->name,
- expanded_bits, function_name_prefix_semantics);
- lf_printf (file, ":\n");
- lf_indent (file, +1);
- lf_printf (file, "{\n");
- lf_indent (file, +2);
- lf_putstr (file, "const unsigned_word cia = nia;\n");
- print_icache_body (file,
- instruction,
- expanded_bits,
- cache_rules,
- (options.gen.direct_access
- ? define_variables
- : declare_variables),
- (options.gen.icache
- ? get_values_from_icache : do_not_use_icache));
- print_semantic_body (file, instruction, expanded_bits, opcodes);
- if (options.gen.direct_access)
- print_icache_body (file,
- instruction,
- expanded_bits,
- cache_rules,
- undef_variables,
- (options.gen.icache
- ? get_values_from_icache : do_not_use_icache));
- print_jump (file, 1 /*is tail */ );
- lf_indent (file, -2);
- lf_printf (file, "}\n");
-}
-#endif
-
-
-#if 0
-static void
-print_jump_definition (lf *file,
- gen_entry *entry,
- insn_entry * insn, int depth, void *data)
-{
- cache_entry *cache_rules = (cache_entry *) data;
- if (options.generate_expanded_instructions)
- {
- ASSERT (entry->nr_insns == 1
- && entry->opcode == NULL
- && entry->parent != NULL && entry->parent->opcode != NULL);
- ASSERT (entry->nr_insns == 1
- && entry->opcode == NULL
- && entry->parent != NULL
- && entry->parent->opcode != NULL
- && entry->parent->opcode_rule != NULL);
- print_jump_insn (file,
- entry->insns->words[0]->insn,
- entry->expanded_bits, entry->opcode, cache_rules);
- }
- else
- {
- print_jump_insn (file,
- instruction->words[0]->insn, NULL, NULL, cache_rules);
- }
-}
-#endif
-
-#if 0
-static void
-print_jump_internal_function (lf *file,
- gen_entry *table,
- function_entry * function, void *data)
-{
- if (function->is_internal)
- {
- lf_printf (file, "\n");
- lf_print__line_ref (file, function->line);
- lf_indent (file, -1);
- print_function_name (file,
- function->name,
- NULL,
- (options.gen.icache
- ? function_name_prefix_icache
- : function_name_prefix_semantics));
- lf_printf (file, ":\n");
- lf_indent (file, +1);
- lf_printf (file, "{\n");
- lf_indent (file, +2);
- lf_printf (file, "const unsigned_word cia = nia;\n");
- table_print_code (file, function->code);
- lf_print__internal_ref (file);
- print_sim_engine_abort (file, "Internal function must longjump");
- lf_indent (file, -2);
- lf_printf (file, "}\n");
- }
-}
-#endif
-
-
-
-#if 0
-static void
-print_jump_until_stop_body (lf *file,
- insn_table *table, cache_table * cache_rules)
-{
- lf_printf (file, "{\n");
- lf_indent (file, +2);
- lf_putstr (file, "jmp_buf halt;\n");
- lf_putstr (file, "jmp_buf restart;\n");
- lf_putstr (file, "sim_cpu *cpu = NULL;\n");
- lf_putstr (file, "unsigned_word nia = -1;\n");
- lf_putstr (file, "instruction_word instruction = 0;\n");
- if ((code & generate_with_icache))
- {
- lf_putstr (file, "idecode_cache *cache_entry = NULL;\n");
- }
- if (generate_smp)
- {
- lf_putstr (file, "int current_cpu = -1;\n");
- }
-
- /* all the switches and tables - they know about jumping */
- print_idecode_lookups (file, table, cache_rules);
-
- /* start the simulation up */
- if ((code & generate_with_icache))
- {
- lf_putstr (file, "\n");
- lf_putstr (file, "{\n");
- lf_putstr (file, " int cpu_nr;\n");
- lf_putstr (file, " for (cpu_nr = 0; cpu_nr < nr_cpus; cpu_nr++)\n");
- lf_putstr (file, " cpu_flush_icache(cpus[cpu_nr]);\n");
- lf_putstr (file, "}\n");
- }
-
- lf_putstr (file, "\n");
- lf_putstr (file, "psim_set_halt_and_restart(system, &halt, &restart);\n");
-
- lf_putstr (file, "\n");
- lf_putstr (file, "if (setjmp(halt))\n");
- lf_putstr (file, " return;\n");
-
- lf_putstr (file, "\n");
- lf_putstr (file, "setjmp(restart);\n");
-
- lf_putstr (file, "\n");
- if (!generate_smp)
- {
- lf_putstr (file, "cpu = cpus[0];\n");
- lf_putstr (file, "nia = cpu_get_program_counter(cpu);\n");
- }
- else
- {
- lf_putstr (file, "current_cpu = psim_last_cpu(system);\n");
- }
-
- if (!(code & generate_with_icache))
- {
- lf_printf (file, "\n");
- lf_indent (file, -1);
- lf_printf (file, "idecode:\n");
- lf_indent (file, +1);
- }
-
- print_jump (file, 0 /*is_tail */ );
-
- if ((code & generate_with_icache))
- {
- lf_indent (file, -1);
- lf_printf (file, "cache_miss:\n");
- lf_indent (file, +1);
- }
-
- lf_putstr (file, "instruction\n");
- lf_putstr (file, " = vm_instruction_map_read(cpu_instruction_map(cpu),\n");
- lf_putstr (file, " cpu, nia);\n");
- print_idecode_body (file, table, "/*IGORE*/");
-
- /* print out a table of all the internals functions */
- insn_table_traverse_function (table,
- file, NULL, print_jump_internal_function);
-
- /* print out a table of all the instructions */
- if (generate_expanded_instructions)
- insn_table_traverse_tree (table, file, cache_rules, 1, NULL, /* start */
- print_jump_definition, /* leaf */
- NULL, /* end */
- NULL); /* padding */
- else
- insn_table_traverse_insn (table,
- file, cache_rules, print_jump_definition);
- lf_indent (file, -2);
- lf_printf (file, "}\n");
-}
-#endif
-
-/****************************************************************/
-
-
-
/* Output code to do any final checks on the decoded instruction.
This includes things like verifying any on decoded fields have the
correct value and checking that (for floating point) floating point