static void gen_icache_h(insn_table *table, lf *file, igen_code generate) { lf_printf(file, "typedef %s idecode_icache\n(%s);\n", ICACHE_FUNCTION_TYPE, ICACHE_FUNCTION_FORMAL); lf_printf(file, "\n"); if ((code & generate_calls) && (code & generate_with_icache)) { insn_table_traverse_function(table, file, NULL, print_icache_internal_function_declaration); if (generate_expanded_instructions) insn_table_traverse_tree(table, file, NULL, 1, NULL, /* start */ print_icache_declaration, /* leaf */ NULL, /* end */ NULL); /* padding */ else insn_table_traverse_insn(table, file, NULL, print_icache_declaration); } else { lf_print__this_file_is_empty(file); } }
extern void gen_support_h(insn_table *table, lf *file) { /* output a declaration for all functions */ insn_table_traverse_function(table, file, NULL, support_h_function); lf_printf(file, "\n"); lf_printf(file, "#if (SUPPORT_INLINE & INCLUDE_MODULE)\n"); lf_printf(file, "# include \"support.c\"\n"); lf_printf(file, "#endif\n"); }
void gen_support_c(insn_table *table, lf *file) { lf_printf(file, "#include \"cpu.h\"\n"); lf_printf(file, "#include \"idecode.h\"\n"); lf_printf(file, "#ifdef HAVE_COMMON_FPU\n"); lf_printf(file, "#include \"sim-inline.h\"\n"); lf_printf(file, "#include \"sim-fpu.h\"\n"); lf_printf(file, "#endif\n"); lf_printf(file, "#include \"support.h\"\n"); lf_printf(file, "\n"); /* output a definition (c-code) for all functions */ insn_table_traverse_function(table, file, NULL, support_c_function); }
static void gen_icache_c(insn_table *table, cache_table *cache_rules, lf *file, igen_code generate) { /* output `internal' invalid/floating-point unavailable functions where needed */ if ((code & generate_calls) && (code & generate_with_icache)) { lf_printf(file, "\n"); lf_printf(file, "#include \"cpu.h\"\n"); lf_printf(file, "#include \"idecode.h\"\n"); lf_printf(file, "#include \"semantics.h\"\n"); lf_printf(file, "#include \"icache.h\"\n"); lf_printf(file, "#ifdef HAVE_COMMON_FPU\n"); lf_printf(file, "#include \"sim-inline.h\"\n"); lf_printf(file, "#include \"sim-fpu.h\"\n"); lf_printf(file, "#endif\n"); lf_printf(file, "#include \"support.h\"\n"); lf_printf(file, "\n"); insn_table_traverse_function(table, file, NULL, print_icache_internal_function_definition); lf_printf(file, "\n"); if (generate_expanded_instructions) insn_table_traverse_tree(table, file, cache_rules, 1, NULL, /* start */ print_icache_definition, /* leaf */ NULL, /* end */ NULL); /* padding */ else insn_table_traverse_insn(table, file, cache_rules, print_icache_definition); } else { lf_print__this_file_is_empty(file); } }