From 7e60d30187f19a9007dc59d3d5aed847d3dada95 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Fri, 8 Jul 2011 02:27:18 +0000 Subject: Remove all #if 0'd code. * filter.c: Remove #if 0'd function it_is. (main): Remove #if 0'd code. * gen-engine.c: Remove #if 0'd functions print_jump, print_jump_insn, print_jump_definition, print_jump_internal_function, print_jump_body. (gen_engine_c): Remove #if 0'd code. * gen-idecode.c: Remove #if 0'd functions print_jump print_jump, print_jump_insn, print_jump_definition, print_jump_internal_function, print_jump_until_stop_body. * gen-model.c: Remove #if 0'd functions model_c_or_h_data, model_c_or_h_function, gen_model_h, model_c_insn, model_c_function, gen_model_c and types model_c_passed_data and struct _model_c_passed_data. * gen.c: Remove #if 0'd type constant_field_types and function insn_field_is_constant. (gen_entry_find_opcode_field): Remove #if 0'd code. * ld-insn.c (parse_insn_model_record): Remove #if 0'd code. * misc.h (STRDUP, STRNDUP): Remove #if 0'd macros. --- sim/igen/ChangeLog | 22 +++ sim/igen/filter.c | 30 +--- sim/igen/gen-engine.c | 325 ---------------------------------------- sim/igen/gen-idecode.c | 321 --------------------------------------- sim/igen/gen-model.c | 398 ------------------------------------------------- sim/igen/gen.c | 111 -------------- sim/igen/ld-insn.c | 7 - sim/igen/misc.h | 4 - 8 files changed, 23 insertions(+), 1195 deletions(-) (limited to 'sim') diff --git a/sim/igen/ChangeLog b/sim/igen/ChangeLog index 7d1a9b4..576962e 100644 --- a/sim/igen/ChangeLog +++ b/sim/igen/ChangeLog @@ -1,3 +1,25 @@ +2011-07-08 Hans-Peter Nilsson + + Remove all #if 0'd code. + * filter.c: Remove #if 0'd function it_is. + (main): Remove #if 0'd code. + * gen-engine.c: Remove #if 0'd functions print_jump, + print_jump_insn, print_jump_definition, + print_jump_internal_function, print_jump_body. + (gen_engine_c): Remove #if 0'd code. + * gen-idecode.c: Remove #if 0'd functions print_jump print_jump, + print_jump_insn, print_jump_definition, + print_jump_internal_function, print_jump_until_stop_body. + * gen-model.c: Remove #if 0'd functions model_c_or_h_data, + model_c_or_h_function, gen_model_h, model_c_insn, + model_c_function, gen_model_c and types model_c_passed_data + and struct _model_c_passed_data. + * gen.c: Remove #if 0'd type constant_field_types and function + insn_field_is_constant. + (gen_entry_find_opcode_field): Remove #if 0'd code. + * ld-insn.c (parse_insn_model_record): Remove #if 0'd code. + * misc.h (STRDUP, STRNDUP): Remove #if 0'd macros. + 2011-02-14 Mike Frysinger * table.c (table_push): Change zfree to free. diff --git a/sim/igen/filter.c b/sim/igen/filter.c index 5215695..3b36345 100644 --- a/sim/igen/filter.c +++ b/sim/igen/filter.c @@ -216,29 +216,6 @@ is_filtered_out (filter *filters, const char *flags) } -#if 0 -int -it_is (const char *flag, const char *flags) -{ - int flag_len = strlen (flag); - while (*flags != '\0') - { - if (!strncmp (flags, flag, flag_len) - && (flags[flag_len] == ',' || flags[flag_len] == '\0')) - return 1; - while (*flags != ',') - { - if (*flags == '\0') - return 0; - flags++; - } - flags++; - } - return 0; -} -#endif - - char * filter_next (filter *set, char *member) { @@ -294,12 +271,7 @@ main (int argc, char **argv) /* dump various info */ l = lf_open ("-", "stdout", lf_omit_references, lf_is_text, "tmp-filter"); -#if 0 - if (is_filtered_out (argv[1], superset)) - lf_printf (l, "excluded\n"); - else - lf_printf (l, "included\n"); -#endif + /* subset */ { dump_filter (l, "{", subset, " }"); diff --git a/sim/igen/gen-engine.c b/sim/igen/gen-engine.c index dd3a46a..2e9ec7c 100644 --- a/sim/igen/gen-engine.c +++ b/sim/igen/gen-engine.c @@ -333,325 +333,6 @@ after all the other CPU's and the event queue have been processed */\n\ /****************************************************************/ -#if 0 -static void -print_jump (lf *file, int is_tail) -{ - if (!options.gen.smp) - { - lf_putstr (file, "if (event_queue_tick (sd))\n"); - lf_putstr (file, " {\n"); - lf_putstr (file, " CPU_CIA (processor) = nia;\n"); - lf_putstr (file, " sim_events_process (sd);\n"); - lf_putstr (file, " }\n"); - lf_putstr (file, "}\n"); - } - - if (options.gen.smp) - { - if (is_tail) - lf_putstr (file, "cpu_set_program_counter(processor, nia);\n"); - lf_putstr (file, "current_cpu += 1;\n"); - lf_putstr (file, "if (current_cpu >= nr_cpus)\n"); - lf_putstr (file, " {\n"); - lf_putstr (file, " if (sim_events_tick (sd))\n"); - lf_putstr (file, " {\n"); - lf_putstr (file, " sim_events_process (sd);\n"); - lf_putstr (file, " }\n"); - lf_putstr (file, " current_cpu = 0;\n"); - lf_putstr (file, " }\n"); - lf_putstr (file, "processor = processors[current_cpu];\n"); - lf_putstr (file, "nia = cpu_get_program_counter(processor);\n"); - } - - if (options.gen.icache) - { - lf_putstr (file, "cache_entry = cpu_icache_entry(processor, 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 engine;\n"); - } - -} -#endif - - -#if 0 -static void -print_jump_insn (lf *file, - insn_entry * instruction, - opcode_bits *expanded_bits, - opcode_field *opcodes, cache_entry *cache_rules) -{ - insn_opcodes opcode_path; - - memset (&opcode_path, 0, sizeof (opcode_path)); - opcode_path.opcode = opcodes; - - /* what we are for the moment */ - lf_printf (file, "\n"); - print_my_defines (file, - instruction->name, - instruction->format_name, expanded_bits); - - /* output the icache entry */ - if (options.gen.icache) - { - lf_printf (file, "\n"); - lf_indent (file, -1); - print_function_name (file, - instruction->name, - instruction->format_name, - NULL, 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, &opcode_path); - 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, - instruction->format_name, - NULL, - expanded_bits, function_name_prefix_semantics); - lf_printf (file, ";\n"); - if (options.gen.semantic_icache) - { - print_semantic_body (file, - instruction, expanded_bits, &opcode_path); - print_jump (file, 1 /*is-tail */ ); - } - else - { - lf_printf (file, "/* goto "); - print_function_name (file, - instruction->name, - instruction->format_name, - NULL, - 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, - instruction->format_name, - NULL, 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, &opcode_path); - 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, int depth, void *data) -{ - cache_entry *cache_rules = (cache_entry *) data; - if (entry->opcode_rule->with_duplicates) - { - 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->insn, - entry->expanded_bits, entry->opcode, cache_rules); - } - else - { - print_jump_insn (file, entry->insns->insn, NULL, NULL, cache_rules); - } -} -#endif - - -#if 0 -static void -print_jump_internal_function (lf *file, 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, - NULL, - 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); - lf_printf (file, "error(\"Internal function must longjump\\n\");\n"); - lf_indent (file, -2); - lf_printf (file, "}\n"); - } -} -#endif - - -#if 0 -static void -print_jump_body (lf *file, - gen_entry *entry, insn_table *isa, cache_entry *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, "cpu *processor = NULL;\n"); - lf_putstr (file, "unsigned_word nia = -1;\n"); - lf_putstr (file, "instruction_word instruction = 0;\n"); - if (options.gen.icache) - { - lf_putstr (file, "engine_cache *cache_entry = NULL;\n"); - } - if (options.gen.smp) - { - lf_putstr (file, "int current_cpu = -1;\n"); - } - - /* all the switches and tables - they know about jumping */ - print_idecode_lookups (file, entry, cache_rules); - - /* start the simulation up */ - if (options.gen.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(processors[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 (!options.gen.smp) - { - lf_putstr (file, "processor = processors[0];\n"); - lf_putstr (file, "nia = cpu_get_program_counter(processor);\n"); - } - else - { - lf_putstr (file, "current_cpu = psim_last_cpu(system);\n"); - } - - if (!options.gen.icache) - { - lf_printf (file, "\n"); - lf_indent (file, -1); - lf_printf (file, "engine:\n"); - lf_indent (file, +1); - } - - print_jump (file, 0 /*is_tail */ ); - - if (options.gen.icache) - { - lf_indent (file, -1); - lf_printf (file, "cache_miss:\n"); - lf_indent (file, +1); - } - - print_engine_issue_prefix_hook (file); - lf_putstr (file, "instruction\n"); - lf_putstr (file, - " = vm_instruction_map_read(cpu_instruction_map(processor),\n"); - lf_putstr (file, " processor, nia);\n"); - print_engine_issue_prefix_hook (file); - print_idecode_body (file, entry, "/*IGORE*/"); - print_engine_issue_postfix_hook (file); - - /* print out a table of all the internals functions */ - function_entry_traverse (file, isa->functions, - print_jump_internal_function, NULL); - - /* print out a table of all the instructions */ - ERROR ("Use the list of semantic functions, not travere_tree"); - gen_entry_traverse_tree (file, entry, 1, NULL, /* start */ - print_jump_definition, /* leaf */ - NULL, /* end */ - cache_rules); - lf_indent (file, -2); - lf_printf (file, "}\n"); -} -#endif - - -/****************************************************************/ - - void print_engine_run_function_header (lf *file, char *processor, @@ -754,12 +435,6 @@ gen_engine_c (lf *file, case generate_jumps: ERROR ("Jumps currently unimplemented"); -#if 0 - print_engine_run_function_header (file, - entry->processor, - is_function_definition); - print_jump_body (file, entry->table, isa, cache_rules); -#endif break; } } 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 diff --git a/sim/igen/gen-model.c b/sim/igen/gen-model.c index fae1ebb..e5e6570 100644 --- a/sim/igen/gen-model.c +++ b/sim/igen/gen-model.c @@ -36,404 +36,6 @@ #endif -#if 0 -static void -model_c_or_h_data (insn_table *table, lf *file, table_entry *data) -{ - if (data->annex) - { - table_entry_print_cpp_line_nr (file, data->annex_line); - lf_print__c_code (file, data->annex); - lf_print__internal_reference (file); - lf_printf (file, "\n"); - } -} - -static void -model_c_or_h_function (insn_table *entry, - lf *file, table_entry *function, char *prefix) -{ - if (function->fields[function_type] == NULL - || function->fields[function_type][0] == '\0') - { - error ("Model function type not specified for %s", - function->fields[function_name]); - } - lf_printf (file, "\n"); - lf_print_function_type (file, function->fields[function_type], prefix, " "); - lf_printf (file, "%s\n(%s);\n", - function->fields[function_name], - function->fields[function_param]); - lf_printf (file, "\n"); -} - -void -gen_model_h (insn_table *table, lf *file) -{ - insn *insn_ptr; - model *model_ptr; - insn *macro; - char *name; - int model_create_p = 0; - int model_init_p = 0; - int model_halt_p = 0; - int model_mon_info_p = 0; - int model_mon_info_free_p = 0; - - for (macro = model_macros; macro; macro = macro->next) - { - model_c_or_h_data (table, file, macro->file_entry); - } - - lf_printf (file, "typedef enum _model_enum {\n"); - lf_printf (file, " MODEL_NONE,\n"); - for (model_ptr = models; model_ptr; model_ptr = model_ptr->next) - { - lf_printf (file, " MODEL_%s,\n", model_ptr->name); - } - lf_printf (file, " nr_models\n"); - lf_printf (file, "} model_enum;\n"); - lf_printf (file, "\n"); - - lf_printf (file, "#define DEFAULT_MODEL MODEL_%s\n", - (models) ? models->name : "NONE"); - lf_printf (file, "\n"); - - lf_printf (file, "typedef struct _model_data model_data;\n"); - lf_printf (file, "typedef struct _model_time model_time;\n"); - lf_printf (file, "\n"); - - lf_printf (file, "extern model_enum current_model;\n"); - lf_printf (file, "extern const char *model_name[ (int)nr_models ];\n"); - lf_printf (file, - "extern const char *const *const model_func_unit_name[ (int)nr_models ];\n"); - lf_printf (file, - "extern const model_time *const model_time_mapping[ (int)nr_models ];\n"); - lf_printf (file, "\n"); - - for (insn_ptr = model_functions; insn_ptr; insn_ptr = insn_ptr->next) - { - model_c_or_h_function (table, file, insn_ptr->file_entry, - "INLINE_MODEL"); - name = insn_ptr->file_entry->fields[function_name]; - if (strcmp (name, "model_create") == 0) - model_create_p = 1; - else if (strcmp (name, "model_init") == 0) - model_init_p = 1; - else if (strcmp (name, "model_halt") == 0) - model_halt_p = 1; - else if (strcmp (name, "model_mon_info") == 0) - model_mon_info_p = 1; - else if (strcmp (name, "model_mon_info_free") == 0) - model_mon_info_free_p = 1; - } - - if (!model_create_p) - { - lf_print_function_type (file, "model_data *", "INLINE_MODEL", " "); - lf_printf (file, "model_create\n"); - lf_printf (file, "(sim_cpu *cpu);\n"); - lf_printf (file, "\n"); - } - - if (!model_init_p) - { - lf_print_function_type (file, "void", "INLINE_MODEL", " "); - lf_printf (file, "model_init\n"); - lf_printf (file, "(model_data *model_ptr);\n"); - lf_printf (file, "\n"); - } - - if (!model_halt_p) - { - lf_print_function_type (file, "void", "INLINE_MODEL", " "); - lf_printf (file, "model_halt\n"); - lf_printf (file, "(model_data *model_ptr);\n"); - lf_printf (file, "\n"); - } - - if (!model_mon_info_p) - { - lf_print_function_type (file, "model_print *", "INLINE_MODEL", " "); - lf_printf (file, "model_mon_info\n"); - lf_printf (file, "(model_data *model_ptr);\n"); - lf_printf (file, "\n"); - } - - if (!model_mon_info_free_p) - { - lf_print_function_type (file, "void", "INLINE_MODEL", " "); - lf_printf (file, "model_mon_info_free\n"); - lf_printf (file, "(model_data *model_ptr,\n"); - lf_printf (file, " model_print *info_ptr);\n"); - lf_printf (file, "\n"); - } - - lf_print_function_type (file, "void", "INLINE_MODEL", " "); - lf_printf (file, "model_set\n"); - lf_printf (file, "(const char *name);\n"); -} - -/****************************************************************/ - -typedef struct _model_c_passed_data model_c_passed_data; -struct _model_c_passed_data -{ - lf *file; - model *model_ptr; -}; - -static void -model_c_insn (insn_table *entry, - lf *phony_file, void *data, insn * instruction, int depth) -{ - model_c_passed_data *data_ptr = (model_c_passed_data *) data; - lf *file = data_ptr->file; - char *current_name = data_ptr->model_ptr->printable_name; - table_model_entry *model_ptr = instruction->file_entry->model_first; - - while (model_ptr) - { - if (model_ptr->fields[insn_model_name] == current_name) - { - lf_printf (file, " { %-*s }, /* %s */\n", - max_model_fields_len, - model_ptr->fields[insn_model_fields], - instruction->file_entry->fields[insn_name]); - return; - } - - model_ptr = model_ptr->next; - } - - lf_printf (file, " { %-*s }, /* %s */\n", - max_model_fields_len, - data_ptr->model_ptr->insn_default, - instruction->file_entry->fields[insn_name]); -} - -static void -model_c_function (insn_table *table, - lf *file, table_entry *function, const char *prefix) -{ - if (function->fields[function_type] == NULL - || function->fields[function_type][0] == '\0') - { - error ("Model function return type not specified for %s", - function->fields[function_name]); - } - else - { - lf_printf (file, "\n"); - lf_print_function_type (file, function->fields[function_type], prefix, - "\n"); - lf_printf (file, "%s(%s)\n", function->fields[function_name], - function->fields[function_param]); - } - lf_printf (file, "{\n"); - if (function->annex) - { - lf_indent (file, +2); - table_entry_print_cpp_line_nr (file, function->annex_line); - lf_print__c_code (file, function->annex); - lf_indent (file, -2); - } - lf_printf (file, "}\n"); - lf_print__internal_reference (file); - lf_printf (file, "\n"); -} - -void -gen_model_c (insn_table *table, lf *file) -{ - insn *insn_ptr; - model *model_ptr; - char *name; - int model_create_p = 0; - int model_init_p = 0; - int model_halt_p = 0; - int model_mon_info_p = 0; - int model_mon_info_free_p = 0; - - lf_printf (file, "\n"); - lf_printf (file, "#include \"cpu.h\"\n"); - lf_printf (file, "#include \"mon.h\"\n"); - lf_printf (file, "\n"); - lf_printf (file, "#ifdef HAVE_STDLIB_H\n"); - lf_printf (file, "#include \n"); - lf_printf (file, "#endif\n"); - lf_printf (file, "\n"); - - for (insn_ptr = model_data; insn_ptr; insn_ptr = insn_ptr->next) - { - model_c_or_h_data (table, file, insn_ptr->file_entry); - } - - for (insn_ptr = model_static; insn_ptr; insn_ptr = insn_ptr->next) - { - model_c_or_h_function (table, file, insn_ptr->file_entry, - "/*h*/STATIC"); - } - - for (insn_ptr = model_internal; insn_ptr; insn_ptr = insn_ptr->next) - { - model_c_or_h_function (table, file, insn_ptr->file_entry, - "STATIC_INLINE_MODEL"); - } - - for (insn_ptr = model_static; insn_ptr; insn_ptr = insn_ptr->next) - { - model_c_function (table, file, insn_ptr->file_entry, "/*c*/STATIC"); - } - - for (insn_ptr = model_internal; insn_ptr; insn_ptr = insn_ptr->next) - { - model_c_function (table, file, insn_ptr->file_entry, - "STATIC_INLINE_MODEL"); - } - - for (insn_ptr = model_functions; insn_ptr; insn_ptr = insn_ptr->next) - { - model_c_function (table, file, insn_ptr->file_entry, "INLINE_MODEL"); - name = insn_ptr->file_entry->fields[function_name]; - if (strcmp (name, "model_create") == 0) - model_create_p = 1; - else if (strcmp (name, "model_init") == 0) - model_init_p = 1; - else if (strcmp (name, "model_halt") == 0) - model_halt_p = 1; - else if (strcmp (name, "model_mon_info") == 0) - model_mon_info_p = 1; - else if (strcmp (name, "model_mon_info_free") == 0) - model_mon_info_free_p = 1; - } - - if (!model_create_p) - { - lf_print_function_type (file, "model_data *", "INLINE_MODEL", "\n"); - lf_printf (file, "model_create(sim_cpu *cpu)\n"); - lf_printf (file, "{\n"); - lf_printf (file, " return (model_data *)0;\n"); - lf_printf (file, "}\n"); - lf_printf (file, "\n"); - } - - if (!model_init_p) - { - lf_print_function_type (file, "void", "INLINE_MODEL", "\n"); - lf_printf (file, "model_init(model_data *model_ptr)\n"); - lf_printf (file, "{\n"); - lf_printf (file, "}\n"); - lf_printf (file, "\n"); - } - - if (!model_halt_p) - { - lf_print_function_type (file, "void", "INLINE_MODEL", "\n"); - lf_printf (file, "model_halt(model_data *model_ptr)\n"); - lf_printf (file, "{\n"); - lf_printf (file, "}\n"); - lf_printf (file, "\n"); - } - - if (!model_mon_info_p) - { - lf_print_function_type (file, "model_print *", "INLINE_MODEL", "\n"); - lf_printf (file, "model_mon_info(model_data *model_ptr)\n"); - lf_printf (file, "{\n"); - lf_printf (file, " return (model_print *)0;\n"); - lf_printf (file, "}\n"); - lf_printf (file, "\n"); - } - - if (!model_mon_info_free_p) - { - lf_print_function_type (file, "void", "INLINE_MODEL", "\n"); - lf_printf (file, "model_mon_info_free(model_data *model_ptr,\n"); - lf_printf (file, " model_print *info_ptr)\n"); - lf_printf (file, "{\n"); - lf_printf (file, "}\n"); - lf_printf (file, "\n"); - } - - lf_printf (file, "/* Insn functional unit info */\n"); - for (model_ptr = models; model_ptr; model_ptr = model_ptr->next) - { - model_c_passed_data data; - - lf_printf (file, "static const model_time model_time_%s[] = {\n", - model_ptr->name); - data.file = file; - data.model_ptr = model_ptr; - insn_table_traverse_insn (table, NULL, (void *) &data, model_c_insn); - - lf_printf (file, "};\n"); - lf_printf (file, "\n"); - lf_printf (file, "\f\n"); - } - - lf_printf (file, "#ifndef _INLINE_C_\n"); - lf_printf (file, - "const model_time *const model_time_mapping[ (int)nr_models ] = {\n"); - lf_printf (file, " (const model_time *const)0,\n"); - for (model_ptr = models; model_ptr; model_ptr = model_ptr->next) - { - lf_printf (file, " model_time_%s,\n", model_ptr->name); - } - lf_printf (file, "};\n"); - lf_printf (file, "#endif\n"); - lf_printf (file, "\n"); - - lf_printf (file, "\f\n"); - lf_printf (file, "/* map model enumeration into printable string */\n"); - lf_printf (file, "#ifndef _INLINE_C_\n"); - lf_printf (file, "const char *model_name[ (int)nr_models ] = {\n"); - lf_printf (file, " \"NONE\",\n"); - for (model_ptr = models; model_ptr; model_ptr = model_ptr->next) - { - lf_printf (file, " \"%s\",\n", model_ptr->printable_name); - } - lf_printf (file, "};\n"); - lf_printf (file, "#endif\n"); - lf_printf (file, "\n"); - - lf_print_function_type (file, "void", "INLINE_MODEL", "\n"); - lf_printf (file, "model_set(const char *name)\n"); - lf_printf (file, "{\n"); - if (models) - { - lf_printf (file, " model_enum model;\n"); - lf_printf (file, - " for(model = MODEL_%s; model < nr_models; model++) {\n", - models->name); - lf_printf (file, " if(strcmp(name, model_name[model]) == 0) {\n"); - lf_printf (file, " current_model = model;\n"); - lf_printf (file, " return;\n"); - lf_printf (file, " }\n"); - lf_printf (file, " }\n"); - lf_printf (file, "\n"); - lf_printf (file, - " error(\"Unknown model '%%s', Models which are known are:%%s\n\",\n"); - lf_printf (file, " name,\n"); - lf_printf (file, " \""); - for (model_ptr = models; model_ptr; model_ptr = model_ptr->next) - { - lf_printf (file, "\\n\\t%s", model_ptr->printable_name); - } - lf_printf (file, "\");\n"); - } - else - { - lf_printf (file, " error(\"No models are currently known about\");\n"); - } - - lf_printf (file, "}\n"); -} - -#endif - - - void gen_model_h (lf *file, insn_table *table) { diff --git a/sim/igen/gen.c b/sim/igen/gen.c index 3db694e..5c1b4be 100644 --- a/sim/igen/gen.c +++ b/sim/igen/gen.c @@ -555,48 +555,6 @@ make_gen_tables (insn_table *isa, decode_table *rules) /****************************************************************/ -#if 0 -typedef enum -{ - field_is_not_constant = 0, - field_constant_int = 1, - field_constant_reserved = 2, - field_constant_string = 3 -} -constant_field_types; - -static constant_field_types -insn_field_is_constant (insn_field * field, decode_table *rule) -{ - switch (field->type) - { - case insn_field_int: - /* field is an integer */ - return field_constant_int; - case insn_field_reserved: - /* field is `/' and treating that as a constant */ - if (rule->with_zero_reserved) - return field_constant_reserved; - else - return field_is_not_constant; - case insn_field_wild: - return field_is_not_constant; /* never constant */ - case insn_field_string: - /* field, though variable, is on the list of forced constants */ - if (filter_is_member (rule->constant_field_names, field->val_string)) - return field_constant_string; - else - return field_is_not_constant; - } - ERROR ("Internal error"); - return field_is_not_constant; -} -#endif - - -/****************************************************************/ - - /* Is the bit, according to the decode rule, identical across all the instructions? */ static int @@ -766,75 +724,6 @@ gen_entry_find_opcode_field (insn_list *insns, break; } - -#if 0 - for (entry = insns; entry != NULL; entry = entry->next) - { - insn_word_entry *fields = entry->insn->word[rule->word_nr]; - opcode_field new_opcode; - - ASSERT (fields != NULL); - - /* find a start point for the opcode field */ - new_opcode.first = rule->first; - while (new_opcode.first <= rule->last - && (!string_only - || - (insn_field_is_constant (fields->bit[new_opcode.first], rule) - != field_constant_string)) && (string_only - || - (insn_field_is_constant - (fields-> - bit[new_opcode.first], - rule) == - field_is_not_constant))) - { - int new_first = fields->bit[new_opcode.first]->last + 1; - ASSERT (new_first > new_opcode.first); - new_opcode.first = new_first; - } - ASSERT (new_opcode.first > rule->last - || (string_only - && insn_field_is_constant (fields->bit[new_opcode.first], - rule) == field_constant_string) - || (!string_only - && insn_field_is_constant (fields->bit[new_opcode.first], - rule))); - - /* find the end point for the opcode field */ - new_opcode.last = rule->last; - while (new_opcode.last >= rule->first - && (!string_only - || insn_field_is_constant (fields->bit[new_opcode.last], - rule) != field_constant_string) - && (string_only - || !insn_field_is_constant (fields->bit[new_opcode.last], - rule))) - { - int new_last = fields->bit[new_opcode.last]->first - 1; - ASSERT (new_last < new_opcode.last); - new_opcode.last = new_last; - } - ASSERT (new_opcode.last < rule->first - || (string_only - && insn_field_is_constant (fields->bit[new_opcode.last], - rule) == field_constant_string) - || (!string_only - && insn_field_is_constant (fields->bit[new_opcode.last], - rule))); - - /* now see if our current opcode needs expanding to include the - interesting fields within this instruction */ - if (new_opcode.first <= rule->last - && curr_opcode.first > new_opcode.first) - curr_opcode.first = new_opcode.first; - if (new_opcode.last >= rule->first - && curr_opcode.last < new_opcode.last) - curr_opcode.last = new_opcode.last; - - } -#endif - /* did the final opcode field end up being empty? */ if (curr_opcode.first > curr_opcode.last) { diff --git a/sim/igen/ld-insn.c b/sim/igen/ld-insn.c index 6c1d496..86506ea 100644 --- a/sim/igen/ld-insn.c +++ b/sim/igen/ld-insn.c @@ -874,13 +874,6 @@ parse_insn_model_record (table *file, filter_parse (&insn->processors, name); } } -#if 0 - /* for some reason record the max length of any - function unit field */ - int len = strlen (insn_model_ptr->field[insn_model_fields]); - if (model->max_model_fields_len < len) - model->max_model_fields_len = len; -#endif /* link it in */ last_insn_model = &insn->models; while ((*last_insn_model) != NULL) diff --git a/sim/igen/misc.h b/sim/igen/misc.h index 808570a..76a29b6 100644 --- a/sim/igen/misc.h +++ b/sim/igen/misc.h @@ -110,10 +110,6 @@ do { \ #define ZALLOC(TYPE) ((TYPE*) zalloc (sizeof(TYPE))) #define NZALLOC(TYPE,N) ((TYPE*) zalloc (sizeof(TYPE) * (N))) -#if 0 -#define STRDUP(STRING) (strcpy (zalloc (strlen (STRING) + 1), (STRING))) -#define STRNDUP(STRING,LEN) (strncpy (zalloc ((LEN) + 1), (STRING), (LEN))) -#endif extern void *zalloc (long size); -- cgit v1.1