sim: igen: constify various func arguments

This commit is contained in:
Mike Frysinger
2022-11-10 23:09:00 +07:00
parent 689c2b4b65
commit fa654e74f2
31 changed files with 380 additions and 265 deletions

View File

@ -75,7 +75,7 @@ filter_parse (filter **filters, const char *filt)
void void
filter_add (filter **set, filter *add) filter_add (filter **set, const filter *add)
{ {
while (add != NULL) while (add != NULL)
{ {
@ -109,7 +109,7 @@ filter_add (filter **set, filter *add)
int int
filter_is_subset (filter *superset, filter *subset) filter_is_subset (const filter *superset, const filter *subset)
{ {
while (1) while (1)
{ {
@ -130,7 +130,7 @@ filter_is_subset (filter *superset, filter *subset)
int int
filter_is_common (filter *l, filter *r) filter_is_common (const filter *l, const filter *r)
{ {
while (1) while (1)
{ {
@ -151,7 +151,7 @@ filter_is_common (filter *l, filter *r)
int int
filter_is_member (filter *filt, const char *flag) filter_is_member (const filter *filt, const char *flag)
{ {
int index = 1; int index = 1;
while (filt != NULL) while (filt != NULL)
@ -166,15 +166,15 @@ filter_is_member (filter *filt, const char *flag)
int int
is_filtered_out (filter *filters, const char *flags) is_filtered_out (const filter *filters, const char *flags)
{ {
while (strlen (flags) > 0) while (strlen (flags) > 0)
{ {
int present; int present;
filter *filt = filters; const filter *filt = filters;
/* break the string up */ /* break the string up */
char *end = strchr (flags, ','); const char *end = strchr (flags, ',');
char *next; const char *next;
unsigned /*size_t */ len; unsigned /*size_t */ len;
if (end == NULL) if (end == NULL)
{ {
@ -207,8 +207,8 @@ is_filtered_out (filter *filters, const char *flags)
} }
char * const char *
filter_next (filter *set, char *member) filter_next (const filter *set, const char *member)
{ {
while (set != NULL) while (set != NULL)
{ {
@ -221,9 +221,12 @@ filter_next (filter *set, char *member)
void void
dump_filter (lf *file, char *prefix, filter *set, char *suffix) dump_filter (lf *file,
const char *prefix,
const filter *set,
const char *suffix)
{ {
char *member; const char *member;
lf_printf (file, "%s", prefix); lf_printf (file, "%s", prefix);
member = filter_next (set, ""); member = filter_next (set, "");
if (member != NULL) if (member != NULL)

View File

@ -31,39 +31,40 @@ extern void filter_parse (filter **filters, const char *filt);
/* add the second filter to the first */ /* add the second filter to the first */
extern void filter_add (filter **filters, filter *add); extern void filter_add (filter **filters, const filter *add);
/* returns true if SUB is a strict subset of SUPER. For an empty set /* returns true if SUB is a strict subset of SUPER. For an empty set
is a member of any set */ is a member of any set */
extern int filter_is_subset (filter *superset, filter *subset); extern int filter_is_subset (const filter *superset, const filter *subset);
/* return true if there is at least one member common to the two /* return true if there is at least one member common to the two
filters */ filters */
extern int filter_is_common (filter *l, filter *r); extern int filter_is_common (const filter *l, const filter *r);
/* returns the index (pos + 1) if the name is in the filter. */ /* returns the index (pos + 1) if the name is in the filter. */
extern int filter_is_member (filter *set, const char *flag); extern int filter_is_member (const filter *set, const char *flag);
/* returns true if one of the flags is not present in the filter. /* returns true if one of the flags is not present in the filter.
=== !filter_is_subset (filter_parse (NULL, flags), filters) */ === !filter_is_subset (filter_parse (NULL, flags), filters) */
int is_filtered_out (filter *filters, const char *flags); int is_filtered_out (const filter *filters, const char *flags);
/* returns the next member of the filter set that follows MEMBER. /* returns the next member of the filter set that follows MEMBER.
Member does not need to be an elememt of the filter set. Next of Member does not need to be an elememt of the filter set. Next of
"" is the first non-empty member */ "" is the first non-empty member */
char *filter_next (filter *set, char *member); const char *filter_next (const filter *set, const char *member);
/* for debugging */ /* for debugging */
extern void dump_filter (lf *file, char *prefix, filter *filt, char *suffix); extern void dump_filter
(lf *file, const char *prefix, const filter *filt, const char *suffix);

View File

@ -63,7 +63,7 @@ print_engine_issue_postfix_hook (lf *file)
static void static void
print_run_body (lf *file, gen_entry *table) print_run_body (lf *file, const gen_entry *table)
{ {
/* Output the function to execute real code: /* Output the function to execute real code:
@ -335,7 +335,7 @@ after all the other CPU's and the event queue have been processed */\n\
void void
print_engine_run_function_header (lf *file, print_engine_run_function_header (lf *file,
char *processor, const char *processor,
function_decl_type decl_type) function_decl_type decl_type)
{ {
int indent; int indent;
@ -390,7 +390,9 @@ print_engine_run_function_header (lf *file,
void void
gen_engine_h (lf *file, gen_engine_h (lf *file,
gen_table *gen, insn_table *isa, cache_entry *cache_rules) const gen_table *gen,
const insn_table *isa,
cache_entry *cache_rules)
{ {
gen_list *entry; gen_list *entry;
for (entry = gen->tables; entry != NULL; entry = entry->next) for (entry = gen->tables; entry != NULL; entry = entry->next)
@ -405,9 +407,11 @@ gen_engine_h (lf *file,
void void
gen_engine_c (lf *file, gen_engine_c (lf *file,
gen_table *gen, insn_table *isa, cache_entry *cache_rules) const gen_table *gen,
const insn_table *isa,
cache_entry *cache_rules)
{ {
gen_list *entry; const gen_list *entry;
/* the intro */ /* the intro */
print_includes (file); print_includes (file);
print_include_inline (file, options.module.semantics); print_include_inline (file, options.module.semantics);

View File

@ -20,10 +20,12 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
extern void gen_engine_h extern void gen_engine_h
(lf *file, gen_table *gen, insn_table *isa, cache_entry *cache_rules); (lf *file, const gen_table *gen, const insn_table *isa,
cache_entry *cache_rules);
extern void gen_engine_c extern void gen_engine_c
(lf *file, gen_table *gen, insn_table *isa, cache_entry *cache_rules); (lf *file, const gen_table *gen, const insn_table *isa,
cache_entry *cache_rules);
extern void print_engine_run_function_header extern void print_engine_run_function_header
(lf *file, char *processor, function_decl_type decl_type); (lf *file, const char *processor, function_decl_type decl_type);

View File

@ -42,7 +42,7 @@ static void
print_icache_function_header (lf *file, print_icache_function_header (lf *file,
const char *basename, const char *basename,
const char *format_name, const char *format_name,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
int is_function_definition, int is_function_definition,
int nr_prefetched_words) int nr_prefetched_words)
{ {
@ -63,9 +63,10 @@ print_icache_function_header (lf *file,
void void
print_icache_declaration (lf *file, print_icache_declaration (lf *file,
insn_entry * insn, const insn_entry *insn,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
insn_opcodes *opcodes, int nr_prefetched_words) const insn_opcodes *opcodes,
int nr_prefetched_words)
{ {
print_icache_function_header (file, print_icache_function_header (file,
insn->name, insn->name,
@ -84,16 +85,16 @@ print_icache_extraction (lf *file,
const char *entry_name, const char *entry_name,
const char *entry_type, const char *entry_type,
const char *entry_expression, const char *entry_expression,
char *single_insn_field, const char *single_insn_field,
line_ref *line, line_ref *line,
insn_field_entry *cur_field, insn_field_entry *cur_field,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
icache_decl_type what_to_declare, icache_decl_type what_to_declare,
icache_body_type what_to_do) icache_body_type what_to_do)
{ {
const char *expression; const char *expression;
opcode_bits *bits; const opcode_bits *bits;
char *reason; const char *reason;
ASSERT (format_name != NULL); ASSERT (format_name != NULL);
ASSERT (entry_name != NULL); ASSERT (entry_name != NULL);
@ -323,8 +324,8 @@ print_icache_extraction (lf *file,
void void
print_icache_body (lf *file, print_icache_body (lf *file,
insn_entry * instruction, const insn_entry *instruction,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
cache_entry *cache_rules, cache_entry *cache_rules,
icache_decl_type what_to_declare, icache_decl_type what_to_declare,
icache_body_type what_to_do, int nr_prefetched_words) icache_body_type what_to_do, int nr_prefetched_words)
@ -479,7 +480,7 @@ print_icache_body (lf *file,
cache_rule->original_fields) cache_rule->original_fields)
&& !filter_is_member (instruction->field_names, cache_rule->name)) && !filter_is_member (instruction->field_names, cache_rule->name))
{ {
char *single_field = const char *single_field =
filter_next (cache_rule->original_fields, ""); filter_next (cache_rule->original_fields, "");
if (filter_next (cache_rule->original_fields, single_field) != if (filter_next (cache_rule->original_fields, single_field) !=
NULL) NULL)
@ -505,7 +506,7 @@ struct _form_fields
}; };
static form_fields * static form_fields *
insn_table_cache_fields (insn_table *isa) insn_table_cache_fields (const insn_table *isa)
{ {
form_fields *forms = NULL; form_fields *forms = NULL;
insn_entry *insn; insn_entry *insn;
@ -538,7 +539,7 @@ insn_table_cache_fields (insn_table *isa)
extern void extern void
print_icache_struct (lf *file, insn_table *isa, cache_entry *cache_rules) print_icache_struct (lf *file, const insn_table *isa, cache_entry *cache_rules)
{ {
/* Create a list of all the different instruction formats with their /* Create a list of all the different instruction formats with their
corresponding field names. */ corresponding field names. */
@ -568,7 +569,7 @@ print_icache_struct (lf *file, insn_table *isa, cache_entry *cache_rules)
lf_indent (file, +2); lf_indent (file, +2);
{ {
cache_entry *cache_rule; cache_entry *cache_rule;
char *field; const char *field;
/* space for any instruction words */ /* space for any instruction words */
if (options.gen.insn_in_icache) if (options.gen.insn_in_icache)
lf_printf (file, "instruction_word insn[%d];\n", lf_printf (file, "instruction_word insn[%d];\n",
@ -582,7 +583,7 @@ print_icache_struct (lf *file, insn_table *isa, cache_entry *cache_rules)
if (filter_is_subset if (filter_is_subset
(format->fields, cache_rule->original_fields)) (format->fields, cache_rule->original_fields))
{ {
char *memb; const char *memb;
lf_printf (file, "%s %s;", lf_printf (file, "%s %s;",
(cache_rule->type == NULL (cache_rule->type == NULL
? "unsigned" ? "unsigned"
@ -642,9 +643,9 @@ print_icache_struct (lf *file, insn_table *isa, cache_entry *cache_rules)
static void static void
print_icache_function (lf *file, print_icache_function (lf *file,
insn_entry * instruction, const insn_entry *instruction,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
insn_opcodes *opcodes, const insn_opcodes *opcodes,
cache_entry *cache_rules, int nr_prefetched_words) cache_entry *cache_rules, int nr_prefetched_words)
{ {
int indent; int indent;
@ -742,9 +743,9 @@ print_icache_function (lf *file,
void void
print_icache_definition (lf *file, print_icache_definition (lf *file,
insn_entry * insn, const insn_entry *insn,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
insn_opcodes *opcodes, const insn_opcodes *opcodes,
cache_entry *cache_rules, int nr_prefetched_words) cache_entry *cache_rules, int nr_prefetched_words)
{ {
print_icache_function (file, print_icache_function (file,
@ -757,7 +758,7 @@ print_icache_definition (lf *file,
void void
print_icache_internal_function_declaration (lf *file, print_icache_internal_function_declaration (lf *file,
function_entry * function, const function_entry *function,
void *data) void *data)
{ {
ASSERT (options.gen.icache); ASSERT (options.gen.icache);
@ -778,7 +779,7 @@ print_icache_internal_function_declaration (lf *file,
void void
print_icache_internal_function_definition (lf *file, print_icache_internal_function_definition (lf *file,
function_entry * function, const function_entry *function,
void *data) void *data)
{ {
ASSERT (options.gen.icache); ASSERT (options.gen.icache);

View File

@ -42,8 +42,8 @@ icache_body_type;
extern void print_icache_body extern void print_icache_body
(lf *file, (lf *file,
insn_entry * instruction, const insn_entry *instruction,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
cache_entry *cache_rules, cache_entry *cache_rules,
icache_decl_type what_to_declare, icache_decl_type what_to_declare,
icache_body_type what_to_do, int nr_prefetched_words); icache_body_type what_to_do, int nr_prefetched_words);
@ -53,15 +53,17 @@ extern void print_icache_body
extern void print_icache_declaration extern void print_icache_declaration
(lf *file, (lf *file,
insn_entry * insn, const insn_entry *insn,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
insn_opcodes *opcodes, int nr_prefetched_words); const insn_opcodes *opcodes,
int nr_prefetched_words);
extern void print_icache_definition extern void print_icache_definition
(lf *file, (lf *file,
insn_entry * insn, const insn_entry *insn,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
insn_opcodes *opcodes, cache_entry *cache_rules, int nr_prefetched_words); const insn_opcodes *opcodes,
cache_entry *cache_rules, int nr_prefetched_words);
/* Output an instruction cache support function */ /* Output an instruction cache support function */
@ -73,7 +75,7 @@ extern function_entry_handler print_icache_internal_function_definition;
/* Output the instruction cache table data structure */ /* Output the instruction cache table data structure */
extern void print_icache_struct extern void print_icache_struct
(lf *file, insn_table *instructions, cache_entry *cache_rules); (lf *file, const insn_table *instructions, cache_entry *cache_rules);
/* Output a single instructions decoder */ /* Output a single instructions decoder */

View File

@ -38,7 +38,7 @@
static void static void
lf_print_opcodes (lf *file, gen_entry *table) lf_print_opcodes (lf *file, const gen_entry *table)
{ {
if (table !=NULL) if (table !=NULL)
{ {
@ -80,7 +80,7 @@ print_idecode_ifetch (lf *file,
static void static void
lf_print_table_name (lf *file, gen_entry *table) lf_print_table_name (lf *file, const gen_entry *table)
{ {
lf_printf (file, "idecode_table"); lf_printf (file, "idecode_table");
lf_print_opcodes (file, table); lf_print_opcodes (file, table);
@ -89,7 +89,7 @@ lf_print_table_name (lf *file, gen_entry *table)
static void static void
print_idecode_table (lf *file, gen_entry *entry, const char *result) print_idecode_table (lf *file, const gen_entry *entry, const char *result)
{ {
lf_printf (file, "/* prime the search */\n"); lf_printf (file, "/* prime the search */\n");
lf_printf (file, "idecode_table_entry *table = "); lf_printf (file, "idecode_table_entry *table = ");
@ -154,7 +154,8 @@ print_idecode_table (lf *file, gen_entry *entry, const char *result)
static void static void
print_idecode_table_start (lf *file, gen_entry *table, int depth, void *data) print_idecode_table_start (lf *file,
const gen_entry *table, int depth, void *data)
{ {
ASSERT (depth == 0); ASSERT (depth == 0);
/* start of the table */ /* start of the table */
@ -168,9 +169,10 @@ print_idecode_table_start (lf *file, gen_entry *table, int depth, void *data)
} }
static void static void
print_idecode_table_leaf (lf *file, gen_entry *entry, int depth, void *data) print_idecode_table_leaf (lf *file,
const gen_entry *entry, int depth, void *data)
{ {
gen_entry *master_entry; const gen_entry *master_entry;
ASSERT (entry->parent != NULL); ASSERT (entry->parent != NULL);
ASSERT (depth == 0); ASSERT (depth == 0);
if (entry->combined_parent == NULL) if (entry->combined_parent == NULL)
@ -241,7 +243,8 @@ print_idecode_table_leaf (lf *file, gen_entry *entry, int depth, void *data)
} }
static void static void
print_idecode_table_end (lf *file, gen_entry *table, int depth, void *data) print_idecode_table_end (lf *file,
const gen_entry *table, int depth, void *data)
{ {
ASSERT (depth == 0); ASSERT (depth == 0);
if (table->opcode_rule->gen == array_gen) if (table->opcode_rule->gen == array_gen)
@ -254,7 +257,7 @@ print_idecode_table_end (lf *file, gen_entry *table, int depth, void *data)
static void static void
print_goto_switch_name (lf *file, gen_entry *entry) print_goto_switch_name (lf *file, const gen_entry *entry)
{ {
lf_printf (file, "case_"); lf_printf (file, "case_");
if (entry->opcode == NULL) if (entry->opcode == NULL)
@ -276,7 +279,7 @@ print_goto_switch_name (lf *file, gen_entry *entry)
static void static void
print_goto_switch_table_leaf (lf *file, print_goto_switch_table_leaf (lf *file,
gen_entry *entry, int depth, void *data) const gen_entry *entry, int depth, void *data)
{ {
ASSERT (entry->parent != NULL); ASSERT (entry->parent != NULL);
ASSERT (depth == 0); ASSERT (depth == 0);
@ -292,7 +295,7 @@ print_goto_switch_table_leaf (lf *file,
} }
static void static void
print_goto_switch_break (lf *file, gen_entry *entry) print_goto_switch_break (lf *file, const gen_entry *entry)
{ {
lf_printf (file, "goto break_"); lf_printf (file, "goto break_");
lf_print_table_name (file, entry->parent); lf_print_table_name (file, entry->parent);
@ -301,7 +304,7 @@ print_goto_switch_break (lf *file, gen_entry *entry)
static void static void
print_goto_switch_table (lf *file, gen_entry *table) print_goto_switch_table (lf *file, const gen_entry *table)
{ {
lf_printf (file, "const static void *"); lf_printf (file, "const static void *");
lf_print_table_name (file, table); lf_print_table_name (file, table);
@ -315,10 +318,12 @@ print_goto_switch_table (lf *file, gen_entry *table)
} }
void print_idecode_switch (lf *file, gen_entry *table, const char *result); void print_idecode_switch
(lf *file, const gen_entry *table, const char *result);
static void static void
print_idecode_switch_start (lf *file, gen_entry *table, int depth, void *data) print_idecode_switch_start (lf *file,
const gen_entry *table, int depth, void *data)
{ {
/* const char *result = data; */ /* const char *result = data; */
ASSERT (depth == 0); ASSERT (depth == 0);
@ -373,7 +378,8 @@ print_idecode_switch_start (lf *file, gen_entry *table, int depth, void *data)
static void static void
print_idecode_switch_leaf (lf *file, gen_entry *entry, int depth, void *data) print_idecode_switch_leaf (lf *file,
const gen_entry *entry, int depth, void *data)
{ {
const char *result = data; const char *result = data;
ASSERT (entry->parent != NULL); ASSERT (entry->parent != NULL);
@ -401,7 +407,7 @@ print_idecode_switch_leaf (lf *file, gen_entry *entry, int depth, void *data)
|| entry->parent->opcode_rule->gen == padded_switch_gen) || entry->parent->opcode_rule->gen == padded_switch_gen)
{ {
/* case: <opcode-nr> - switch */ /* case: <opcode-nr> - switch */
gen_entry *cob; const gen_entry *cob;
for (cob = entry; cob != NULL; cob = cob->combined_next) for (cob = entry; cob != NULL; cob = cob->combined_next)
lf_printf (file, "case %d:\n", cob->opcode_nr); lf_printf (file, "case %d:\n", cob->opcode_nr);
} }
@ -505,7 +511,8 @@ print_idecode_switch_illegal (lf *file, const char *result)
} }
static void static void
print_idecode_switch_end (lf *file, gen_entry *table, int depth, void *data) print_idecode_switch_end (lf *file,
const gen_entry *table, int depth, void *data)
{ {
const char *result = data; const char *result = data;
ASSERT (depth == 0); ASSERT (depth == 0);
@ -565,7 +572,7 @@ print_idecode_switch_end (lf *file, gen_entry *table, int depth, void *data)
void void
print_idecode_switch (lf *file, gen_entry *table, const char *result) print_idecode_switch (lf *file, const gen_entry *table, const char *result)
{ {
gen_entry_traverse_tree (file, table, gen_entry_traverse_tree (file, table,
0, 0,
@ -577,7 +584,7 @@ print_idecode_switch (lf *file, gen_entry *table, const char *result)
static void static void
print_idecode_switch_function_header (lf *file, print_idecode_switch_function_header (lf *file,
gen_entry *table, const gen_entry *table,
int is_function_definition, int is_function_definition,
int nr_prefetched_words) int nr_prefetched_words)
{ {
@ -622,7 +629,8 @@ print_idecode_switch_function_header (lf *file,
static void static void
idecode_declare_if_switch (lf *file, gen_entry *table, int depth, void *data) idecode_declare_if_switch (lf *file,
const gen_entry *table, int depth, void *data)
{ {
if ((table->opcode_rule->gen == switch_gen || table->opcode_rule->gen == goto_switch_gen || table->opcode_rule->gen == padded_switch_gen) &&table->parent != NULL /* don't declare the top one yet */ if ((table->opcode_rule->gen == switch_gen || table->opcode_rule->gen == goto_switch_gen || table->opcode_rule->gen == padded_switch_gen) &&table->parent != NULL /* don't declare the top one yet */
&& table->parent->opcode_rule->gen == array_gen) && table->parent->opcode_rule->gen == array_gen)
@ -636,7 +644,8 @@ idecode_declare_if_switch (lf *file, gen_entry *table, int depth, void *data)
static void static void
idecode_expand_if_switch (lf *file, gen_entry *table, int depth, void *data) idecode_expand_if_switch (lf *file,
const gen_entry *table, int depth, void *data)
{ {
if ((table->opcode_rule->gen == switch_gen || table->opcode_rule->gen == goto_switch_gen || table->opcode_rule->gen == padded_switch_gen) &&table->parent != NULL /* don't expand the top one yet */ if ((table->opcode_rule->gen == switch_gen || table->opcode_rule->gen == goto_switch_gen || table->opcode_rule->gen == padded_switch_gen) &&table->parent != NULL /* don't expand the top one yet */
&& table->parent->opcode_rule->gen == array_gen) && table->parent->opcode_rule->gen == array_gen)
@ -664,7 +673,9 @@ idecode_expand_if_switch (lf *file, gen_entry *table, int depth, void *data)
void void
print_idecode_lookups (lf *file, gen_entry *table, cache_entry *cache_rules) print_idecode_lookups (lf *file,
const gen_entry *table,
cache_entry *cache_rules)
{ {
int depth; int depth;
@ -689,7 +700,7 @@ print_idecode_lookups (lf *file, gen_entry *table, cache_entry *cache_rules)
void void
print_idecode_body (lf *file, gen_entry *table, const char *result) print_idecode_body (lf *file, const gen_entry *table, const char *result)
{ {
if (table->opcode_rule->gen == switch_gen if (table->opcode_rule->gen == switch_gen
|| table->opcode_rule->gen == goto_switch_gen || table->opcode_rule->gen == goto_switch_gen
@ -713,7 +724,8 @@ print_idecode_body (lf *file, gen_entry *table, const char *result)
void void
print_idecode_validate (lf *file, print_idecode_validate (lf *file,
insn_entry * instruction, insn_opcodes *opcode_paths) const insn_entry *instruction,
const insn_opcodes *opcode_paths)
{ {
/* Validate: unchecked instruction fields /* Validate: unchecked instruction fields
@ -764,7 +776,7 @@ print_idecode_validate (lf *file,
relevant bit */ relevant bit */
if (opcode_paths != NULL) if (opcode_paths != NULL)
{ {
insn_opcodes *entry; const insn_opcodes *entry;
for (entry = opcode_paths; entry != NULL; entry = entry->next) for (entry = opcode_paths; entry != NULL; entry = entry->next)
{ {
opcode_field *opcode; opcode_field *opcode;

View File

@ -28,9 +28,11 @@ void print_idecode_issue_function_header
void print_idecode_globals (lf *file); void print_idecode_globals (lf *file);
void print_idecode_lookups void print_idecode_lookups
(lf *file, gen_entry *table, cache_entry *cache_rules); (lf *file,
const gen_entry *table,
cache_entry *cache_rules);
void print_idecode_body (lf *file, gen_entry *table, const char *result); void print_idecode_body (lf *file, const gen_entry *table, const char *result);
@ -40,4 +42,6 @@ void print_idecode_body (lf *file, gen_entry *table, const char *result);
hardware isn't disabled */ hardware isn't disabled */
extern void print_idecode_validate extern void print_idecode_validate
(lf *file, insn_entry * instruction, insn_opcodes *opcode_paths); (lf *file,
const insn_entry *instruction,
const insn_opcodes *opcode_paths);

View File

@ -46,7 +46,9 @@ itable_info;
static void static void
itable_h_insn (lf *file, itable_h_insn (lf *file,
insn_table *entry, insn_entry * instruction, void *data) const insn_table *entry,
const insn_entry *instruction,
void *data)
{ {
int len; int len;
itable_info *info = data; itable_info *info = data;
@ -73,9 +75,9 @@ itable_h_insn (lf *file,
/* print the list of all the different options */ /* print the list of all the different options */
static void static void
itable_print_enum (lf *file, filter *set, char *name) itable_print_enum (lf *file, const filter *set, const char *name)
{ {
char *elem; const char *elem;
lf_printf (file, "typedef enum {\n"); lf_printf (file, "typedef enum {\n");
lf_indent (file, +2); lf_indent (file, +2);
for (elem = filter_next (set, ""); for (elem = filter_next (set, "");
@ -109,9 +111,9 @@ itable_print_enum (lf *file, filter *set, char *name)
/* print an array of the option names as strings */ /* print an array of the option names as strings */
static void static void
itable_print_names (lf *file, filter *set, char *name) itable_print_names (lf *file, const filter *set, const char *name)
{ {
char *elem; const char *elem;
lf_printf (file, "const char *%sitable_%s_names[nr_%sitable_%ss + 1] = {\n", lf_printf (file, "const char *%sitable_%s_names[nr_%sitable_%ss + 1] = {\n",
options.module.itable.prefix.l, name, options.module.itable.prefix.l, name,
options.module.itable.prefix.l, name); options.module.itable.prefix.l, name);
@ -127,7 +129,7 @@ itable_print_names (lf *file, filter *set, char *name)
} }
extern void extern void
gen_itable_h (lf *file, insn_table *isa) gen_itable_h (lf *file, const insn_table *isa)
{ {
itable_info *info = ZALLOC (itable_info); itable_info *info = ZALLOC (itable_info);
@ -206,9 +208,9 @@ gen_itable_h (lf *file, insn_table *isa)
/****************************************************************/ /****************************************************************/
static void static void
itable_print_set (lf *file, filter *set, filter *members) itable_print_set (lf *file, const filter *set, const filter *members)
{ {
char *elem; const char *elem;
lf_printf (file, "\""); lf_printf (file, "\"");
elem = filter_next (members, ""); elem = filter_next (members, "");
if (elem != NULL) if (elem != NULL)
@ -245,7 +247,9 @@ itable_print_set (lf *file, filter *set, filter *members)
static void static void
itable_c_insn (lf *file, itable_c_insn (lf *file,
insn_table *isa, insn_entry * instruction, void *data) const insn_table *isa,
const insn_entry *instruction,
void *data)
{ {
lf_printf (file, "{ "); lf_printf (file, "{ ");
lf_indent (file, +2); lf_indent (file, +2);
@ -273,7 +277,7 @@ itable_c_insn (lf *file,
extern void extern void
gen_itable_c (lf *file, insn_table *isa) gen_itable_c (lf *file, const insn_table *isa)
{ {
/* leader */ /* leader */
lf_printf (file, "#include \"%sitable.h\"\n", lf_printf (file, "#include \"%sitable.h\"\n",

View File

@ -23,6 +23,6 @@
/* Output a table of all the instructions */ /* Output a table of all the instructions */
extern void gen_itable_h (lf *file, insn_table *table); extern void gen_itable_h (lf *file, const insn_table *table);
extern void gen_itable_c (lf *file, insn_table *table); extern void gen_itable_c (lf *file, const insn_table *table);

View File

@ -33,14 +33,14 @@
void void
gen_model_h (lf *file, insn_table *table) gen_model_h (lf *file, const insn_table *table)
{ {
lf_print__this_file_is_empty (file, "suffering bit rot"); lf_print__this_file_is_empty (file, "suffering bit rot");
} }
void void
gen_model_c (lf *file, insn_table *table) gen_model_c (lf *file, const insn_table *table)
{ {
lf_print__this_file_is_empty (file, "suffering bit rot"); lf_print__this_file_is_empty (file, "suffering bit rot");
} }

View File

@ -21,6 +21,6 @@
extern void gen_model_h (lf *file, insn_table *isa); extern void gen_model_h (lf *file, const insn_table *isa);
extern void gen_model_c (lf *file, insn_table *isa); extern void gen_model_c (lf *file, const insn_table *isa);

View File

@ -41,7 +41,7 @@ static void
print_semantic_function_header (lf *file, print_semantic_function_header (lf *file,
const char *basename, const char *basename,
const char *format_name, const char *format_name,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
int is_function_definition, int is_function_definition,
int nr_prefetched_words) int nr_prefetched_words)
{ {
@ -83,9 +83,10 @@ print_semantic_function_header (lf *file,
void void
print_semantic_declaration (lf *file, print_semantic_declaration (lf *file,
insn_entry * insn, const insn_entry *insn,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
insn_opcodes *opcodes, int nr_prefetched_words) const insn_opcodes *opcodes,
int nr_prefetched_words)
{ {
print_semantic_function_header (file, print_semantic_function_header (file,
insn->name, insn->name,
@ -143,8 +144,9 @@ print_idecode_invalid (lf *file, const char *result, invalid_type type)
void void
print_semantic_body (lf *file, print_semantic_body (lf *file,
insn_entry * instruction, const insn_entry *instruction,
opcode_bits *expanded_bits, insn_opcodes *opcodes) const opcode_bits *expanded_bits,
const insn_opcodes *opcodes)
{ {
/* validate the instruction, if a cache this has already been done */ /* validate the instruction, if a cache this has already been done */
if (!options.gen.icache) if (!options.gen.icache)
@ -300,10 +302,11 @@ print_semantic_body (lf *file,
static void static void
print_c_semantic (lf *file, print_c_semantic (lf *file,
insn_entry * instruction, const insn_entry *instruction,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
insn_opcodes *opcodes, const insn_opcodes *opcodes,
cache_entry *cache_rules, int nr_prefetched_words) cache_entry *cache_rules,
int nr_prefetched_words)
{ {
lf_printf (file, "{\n"); lf_printf (file, "{\n");
@ -348,10 +351,11 @@ print_c_semantic (lf *file,
static void static void
print_c_semantic_function (lf *file, print_c_semantic_function (lf *file,
insn_entry * instruction, const insn_entry *instruction,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
insn_opcodes *opcodes, const insn_opcodes *opcodes,
cache_entry *cache_rules, int nr_prefetched_words) cache_entry *cache_rules,
int nr_prefetched_words)
{ {
/* build the semantic routine to execute the instruction */ /* build the semantic routine to execute the instruction */
print_semantic_function_header (file, print_semantic_function_header (file,
@ -367,10 +371,11 @@ print_c_semantic_function (lf *file,
void void
print_semantic_definition (lf *file, print_semantic_definition (lf *file,
insn_entry * insn, const insn_entry *insn,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
insn_opcodes *opcodes, const insn_opcodes *opcodes,
cache_entry *cache_rules, int nr_prefetched_words) cache_entry *cache_rules,
int nr_prefetched_words)
{ {
print_c_semantic_function (file, print_c_semantic_function (file,
insn, insn,

View File

@ -72,14 +72,18 @@
extern void print_semantic_declaration extern void print_semantic_declaration
(lf *file, (lf *file,
insn_entry * insn, const insn_entry *insn,
opcode_bits *bits, insn_opcodes *opcodes, int nr_prefetched_words); const opcode_bits *bits,
const insn_opcodes *opcodes,
int nr_prefetched_words);
extern void print_semantic_definition extern void print_semantic_definition
(lf *file, (lf *file,
insn_entry * insn, const insn_entry *insn,
opcode_bits *bits, const opcode_bits *bits,
insn_opcodes *opcodes, cache_entry *cache_rules, int nr_prefetched_words); const insn_opcodes *opcodes,
cache_entry *cache_rules,
int nr_prefetched_words);
typedef enum typedef enum
@ -95,5 +99,6 @@ extern void print_idecode_invalid
extern void print_semantic_body extern void print_semantic_body
(lf *file, (lf *file,
insn_entry * instruction, const insn_entry *instruction,
opcode_bits *expanded_bits, insn_opcodes *opcodes); const opcode_bits *expanded_bits,
const insn_opcodes *opcodes);

View File

@ -37,7 +37,7 @@
static void static void
print_support_function_name (lf *file, print_support_function_name (lf *file,
function_entry * function, const function_entry *function,
int is_function_definition) int is_function_definition)
{ {
if (function->is_internal) if (function->is_internal)
@ -90,7 +90,7 @@ print_support_function_name (lf *file,
static void static void
support_h_function (lf *file, function_entry * function, void *data) support_h_function (lf *file, const function_entry *function, void *data)
{ {
ASSERT (function->type != NULL); ASSERT (function->type != NULL);
print_support_function_name (file, function, 0 /*!is_definition */ ); print_support_function_name (file, function, 0 /*!is_definition */ );
@ -99,7 +99,7 @@ support_h_function (lf *file, function_entry * function, void *data)
extern void extern void
gen_support_h (lf *file, insn_table *table) gen_support_h (lf *file, const insn_table *table)
{ {
/* output the definition of `SD_' */ /* output the definition of `SD_' */
if (options.gen.smp) if (options.gen.smp)
@ -173,7 +173,7 @@ gen_support_h (lf *file, insn_table *table)
} }
static void static void
support_c_function (lf *file, function_entry * function, void *data) support_c_function (lf *file, const function_entry *function, void *data)
{ {
ASSERT (function->type != NULL); ASSERT (function->type != NULL);
print_support_function_name (file, function, 1 /*!is_definition */ ); print_support_function_name (file, function, 1 /*!is_definition */ );
@ -197,7 +197,7 @@ support_c_function (lf *file, function_entry * function, void *data)
void void
gen_support_c (lf *file, insn_table *table) gen_support_c (lf *file, const insn_table *table)
{ {
lf_printf (file, "#include \"sim-main.h\"\n"); lf_printf (file, "#include \"sim-main.h\"\n");
lf_printf (file, "#include \"%sidecode.h\"\n", lf_printf (file, "#include \"%sidecode.h\"\n",

View File

@ -20,6 +20,6 @@
along with this program. If not, see <http://www.gnu.org/licenses/>. */ along with this program. If not, see <http://www.gnu.org/licenses/>. */
extern void gen_support_h (lf *file, insn_table *table); extern void gen_support_h (lf *file, const insn_table *table);
extern void gen_support_c (lf *file, insn_table *table); extern void gen_support_c (lf *file, const insn_table *table);

View File

@ -38,7 +38,7 @@ sub_val (insn_uint val, int val_last_pos, int first_pos, int last_pos)
} }
static void static void
update_depth (lf *file, gen_entry *entry, int depth, void *data) update_depth (lf *file, const gen_entry *entry, int depth, void *data)
{ {
int *max_depth = (int *) data; int *max_depth = (int *) data;
if (*max_depth < depth) if (*max_depth < depth)
@ -47,7 +47,7 @@ update_depth (lf *file, gen_entry *entry, int depth, void *data)
int int
gen_entry_depth (gen_entry *table) gen_entry_depth (const gen_entry *table)
{ {
int depth = 0; int depth = 0;
gen_entry_traverse_tree (NULL, table, 1, NULL, /*start */ gen_entry_traverse_tree (NULL, table, 1, NULL, /*start */
@ -58,7 +58,9 @@ gen_entry_depth (gen_entry *table)
static void static void
print_gen_entry_path (line_ref *line, gen_entry *table, error_func *print) print_gen_entry_path (const line_ref *line,
const gen_entry *table,
error_func *print)
{ {
if (table->parent == NULL) if (table->parent == NULL)
{ {
@ -75,12 +77,13 @@ print_gen_entry_path (line_ref *line, gen_entry *table, error_func *print)
} }
static void static void
print_gen_entry_insns (gen_entry *table, print_gen_entry_insns (const gen_entry *table,
error_func *print, error_func *print,
char *first_message, char *next_message) const char *first_message,
const char *next_message)
{ {
insn_list *i; insn_list *i;
char *message; const char *message;
message = first_message; message = first_message;
for (i = table->insns; i != NULL; i = i->next) for (i = table->insns; i != NULL; i = i->next)
{ {
@ -94,7 +97,7 @@ print_gen_entry_insns (gen_entry *table,
/* same as strcmp */ /* same as strcmp */
static int static int
insn_field_cmp (insn_word_entry *l, insn_word_entry *r) insn_field_cmp (const insn_word_entry *l, const insn_word_entry *r)
{ {
while (1) while (1)
{ {
@ -170,7 +173,7 @@ insn_field_cmp (insn_word_entry *l, insn_word_entry *r)
/* same as strcmp */ /* same as strcmp */
static int static int
insn_word_cmp (insn_word_entry *l, insn_word_entry *r) insn_word_cmp (const insn_word_entry *l, const insn_word_entry *r)
{ {
while (1) while (1)
{ {
@ -199,7 +202,7 @@ insn_word_cmp (insn_word_entry *l, insn_word_entry *r)
/* same as strcmp */ /* same as strcmp */
static int static int
opcode_bit_cmp (opcode_bits *l, opcode_bits *r) opcode_bit_cmp (const opcode_bits *l, const opcode_bits *r)
{ {
if (l == NULL && r == NULL) if (l == NULL && r == NULL)
return 0; /* all previous bits the same */ return 0; /* all previous bits the same */
@ -233,7 +236,7 @@ opcode_bit_cmp (opcode_bits *l, opcode_bits *r)
/* same as strcmp */ /* same as strcmp */
static int static int
opcode_bits_cmp (opcode_bits *l, opcode_bits *r) opcode_bits_cmp (const opcode_bits *l, const opcode_bits *r)
{ {
while (1) while (1)
{ {
@ -452,7 +455,7 @@ insn_list_insert (insn_list **cur_insn_ptr,
extern void extern void
gen_entry_traverse_tree (lf *file, gen_entry_traverse_tree (lf *file,
gen_entry *table, const gen_entry *table,
int depth, int depth,
gen_entry_handler * start, gen_entry_handler * start,
gen_entry_handler * leaf, gen_entry_handler * leaf,
@ -498,7 +501,9 @@ gen_entry_traverse_tree (lf *file,
/* create a list element containing a single gen_table entry */ /* create a list element containing a single gen_table entry */
static gen_list * static gen_list *
make_table (insn_table *isa, decode_table *rules, model_entry *model) make_table (const insn_table *isa,
const decode_table *rules,
const model_entry *model)
{ {
insn_entry *insn; insn_entry *insn;
gen_list *entry = ZALLOC (gen_list); gen_list *entry = ZALLOC (gen_list);
@ -524,7 +529,7 @@ make_table (insn_table *isa, decode_table *rules, model_entry *model)
gen_table * gen_table *
make_gen_tables (insn_table *isa, decode_table *rules) make_gen_tables (const insn_table *isa, const decode_table *rules)
{ {
gen_table *gen = ZALLOC (gen_table); gen_table *gen = ZALLOC (gen_table);
gen->isa = isa; gen->isa = isa;
@ -560,9 +565,9 @@ make_gen_tables (insn_table *isa, decode_table *rules)
/* Is the bit, according to the decode rule, identical across all the /* Is the bit, according to the decode rule, identical across all the
instructions? */ instructions? */
static int static int
insns_bit_useless (insn_list *insns, decode_table *rule, int bit_nr) insns_bit_useless (const insn_list *insns, const decode_table *rule, int bit_nr)
{ {
insn_list *entry; const insn_list *entry;
int value = -1; int value = -1;
int is_useless = 1; /* cleared if something actually found */ int is_useless = 1; /* cleared if something actually found */
@ -710,7 +715,7 @@ insns_bit_useless (insn_list *insns, decode_table *rule, int bit_nr)
static opcode_field * static opcode_field *
gen_entry_find_opcode_field (insn_list *insns, gen_entry_find_opcode_field (insn_list *insns,
decode_table *rule, int string_only) const decode_table *rule, int string_only)
{ {
opcode_field curr_opcode; opcode_field curr_opcode;
ASSERT (rule != NULL); ASSERT (rule != NULL);
@ -1118,9 +1123,9 @@ insns_match_conditions (insn_list *insns, decode_cond *conditions)
} }
static int static int
insns_match_nr_words (insn_list *insns, int nr_words) insns_match_nr_words (const insn_list *insns, int nr_words)
{ {
insn_list *i; const insn_list *i;
for (i = insns; i != NULL; i = i->next) for (i = insns; i != NULL; i = i->next)
{ {
if (i->insn->nr_words < nr_words) if (i->insn->nr_words < nr_words)
@ -1130,11 +1135,11 @@ insns_match_nr_words (insn_list *insns, int nr_words)
} }
static int static int
insn_list_cmp (insn_list *l, insn_list *r) insn_list_cmp (const insn_list *l, const insn_list *r)
{ {
while (1) while (1)
{ {
insn_entry *insn; const insn_entry *insn;
if (l == NULL && r == NULL) if (l == NULL && r == NULL)
return 0; return 0;
if (l == NULL) if (l == NULL)
@ -1157,7 +1162,7 @@ insn_list_cmp (insn_list *l, insn_list *r)
static void static void
gen_entry_expand_insns (gen_entry *table) gen_entry_expand_insns (gen_entry *table)
{ {
decode_table *opcode_rule; const decode_table *opcode_rule;
ASSERT (table->nr_insns >= 1); ASSERT (table->nr_insns >= 1);
@ -1456,7 +1461,7 @@ gen_tables_expand_insns (gen_table *gen)
worked. */ worked. */
static void static void
make_gen_semantics_list (lf *file, gen_entry *entry, int depth, void *data) make_gen_semantics_list (lf *file, const gen_entry *entry, int depth, void *data)
{ {
gen_table *gen = (gen_table *) data; gen_table *gen = (gen_table *) data;
insn_list *insn; insn_list *insn;

View File

@ -83,7 +83,7 @@ struct _gen_entry
gen_entry *parent; /* parent has the opcode* data */ gen_entry *parent; /* parent has the opcode* data */
/* as a table containing entries */ /* as a table containing entries */
decode_table *opcode_rule; const decode_table *opcode_rule;
opcode_field *opcode; opcode_field *opcode;
int nr_prefetched_words; int nr_prefetched_words;
int nr_entries; int nr_entries;
@ -104,8 +104,8 @@ struct _gen_entry
struct _gen_list struct _gen_list
{ {
model_entry *model; const model_entry *model;
insn_table *isa; const insn_table *isa;
gen_entry *table; gen_entry *table;
gen_list *next; gen_list *next;
}; };
@ -115,9 +115,9 @@ typedef struct _gen_table gen_table;
struct _gen_table struct _gen_table
{ {
/* list of all the instructions */ /* list of all the instructions */
insn_table *isa; const insn_table *isa;
/* list of all the semantic functions */ /* list of all the semantic functions */
decode_table *rules; const decode_table *rules;
/* list of all the generated instruction tables */ /* list of all the generated instruction tables */
gen_list *tables; gen_list *tables;
/* list of all the semantic functions */ /* list of all the semantic functions */
@ -126,25 +126,26 @@ struct _gen_table
}; };
extern gen_table *make_gen_tables (insn_table *isa, decode_table *rules); extern gen_table *make_gen_tables
(const insn_table *isa, const decode_table *rules);
extern void gen_tables_expand_insns (gen_table *gen); extern void gen_tables_expand_insns (gen_table *gen);
extern void gen_tables_expand_semantics (gen_table *gen); extern void gen_tables_expand_semantics (gen_table *gen);
extern int gen_entry_depth (gen_entry *table); extern int gen_entry_depth (const gen_entry *table);
/* Traverse the created data structure */ /* Traverse the created data structure */
typedef void gen_entry_handler typedef void gen_entry_handler
(lf *file, gen_entry *entry, int depth, void *data); (lf *file, const gen_entry *entry, int depth, void *data);
extern void gen_entry_traverse_tree extern void gen_entry_traverse_tree
(lf *file, (lf *file,
gen_entry *table, const gen_entry *table,
int depth, int depth,
gen_entry_handler * start, gen_entry_handler * start,
gen_entry_handler * leaf, gen_entry_handler * end, void *data); gen_entry_handler * leaf, gen_entry_handler * end, void *data);
@ -196,13 +197,16 @@ extern int print_function_name
const char *basename, const char *basename,
const char *format_name, const char *format_name,
const char *model_name, const char *model_name,
opcode_bits *expanded_bits, lf_function_name_prefixes prefix); const opcode_bits *expanded_bits,
lf_function_name_prefixes prefix);
extern void print_my_defines extern void print_my_defines
(lf *file, (lf *file,
const char *basename, const char *format_name, opcode_bits *expanded_bits); const char *basename,
const char *format_name,
const opcode_bits *expanded_bits);
extern void print_itrace (lf *file, insn_entry * insn, int idecode); extern void print_itrace (lf *file, const insn_entry *insn, int idecode);
extern void print_sim_engine_abort (lf *file, const char *message); extern void print_sim_engine_abort (lf *file, const char *message);

View File

@ -176,7 +176,7 @@ print_icache_function_type (lf *file)
/* Function names */ /* Function names */
static int static int
print_opcode_bits (lf *file, opcode_bits *bits) print_opcode_bits (lf *file, const opcode_bits *bits)
{ {
int nr = 0; int nr = 0;
if (bits == NULL) if (bits == NULL)
@ -227,7 +227,7 @@ print_function_name (lf *file,
const char *basename, const char *basename,
const char *format_name, const char *format_name,
const char *model_name, const char *model_name,
opcode_bits *expanded_bits, const opcode_bits *expanded_bits,
lf_function_name_prefixes prefix) lf_function_name_prefixes prefix)
{ {
int nr = 0; int nr = 0;
@ -282,7 +282,8 @@ print_function_name (lf *file,
void void
print_my_defines (lf *file, print_my_defines (lf *file,
const char *basename, const char *basename,
const char *format_name, opcode_bits *expanded_bits) const char *format_name,
const opcode_bits *expanded_bits)
{ {
/* #define MY_INDEX xxxxx */ /* #define MY_INDEX xxxxx */
lf_indent_suppress (file); lf_indent_suppress (file);
@ -339,7 +340,7 @@ print_itrace_prefix (lf *file)
static void static void
print_itrace_format (lf *file, insn_mnemonic_entry *assembler) print_itrace_format (lf *file, const insn_mnemonic_entry *assembler)
{ {
/* pass=1 is fmt string; pass=2 is arguments */ /* pass=1 is fmt string; pass=2 is arguments */
int pass; int pass;
@ -476,7 +477,7 @@ print_itrace_format (lf *file, insn_mnemonic_entry *assembler)
void void
print_itrace (lf *file, insn_entry * insn, int idecode) print_itrace (lf *file, const insn_entry *insn, int idecode)
{ {
/* NB: Here we escape each EOLN. This is so that the the compiler /* NB: Here we escape each EOLN. This is so that the the compiler
treats a trace function call as a single line. Consequently any treats a trace function call as a single line. Consequently any
@ -604,10 +605,10 @@ print_includes (lf *file)
static void static void
gen_semantics_h (lf *file, insn_list *semantics, int max_nr_words) gen_semantics_h (lf *file, const insn_list *semantics, int max_nr_words)
{ {
int word_nr; int word_nr;
insn_list *semantic; const insn_list *semantic;
for (word_nr = -1; word_nr <= max_nr_words; word_nr++) for (word_nr = -1; word_nr <= max_nr_words; word_nr++)
{ {
lf_printf (file, "typedef "); lf_printf (file, "typedef ");
@ -645,11 +646,11 @@ gen_semantics_h (lf *file, insn_list *semantics, int max_nr_words)
static void static void
gen_semantics_c (lf *file, insn_list *semantics, cache_entry *cache_rules) gen_semantics_c (lf *file, const insn_list *semantics, cache_entry *cache_rules)
{ {
if (options.gen.code == generate_calls) if (options.gen.code == generate_calls)
{ {
insn_list *semantic; const insn_list *semantic;
print_includes (file); print_includes (file);
print_include (file, options.module.semantics); print_include (file, options.module.semantics);
lf_printf (file, "\n"); lf_printf (file, "\n");
@ -679,8 +680,8 @@ gen_semantics_c (lf *file, insn_list *semantics, cache_entry *cache_rules)
static void static void
gen_icache_h (lf *file, gen_icache_h (lf *file,
insn_list *semantic, const insn_list *semantic,
function_entry * functions, int max_nr_words) const function_entry *functions, int max_nr_words)
{ {
int word_nr; int word_nr;
for (word_nr = 0; word_nr <= max_nr_words; word_nr++) for (word_nr = 0; word_nr <= max_nr_words; word_nr++)
@ -716,8 +717,8 @@ gen_icache_h (lf *file,
static void static void
gen_icache_c (lf *file, gen_icache_c (lf *file,
insn_list *semantic, const insn_list *semantic,
function_entry * functions, cache_entry *cache_rules) const function_entry *functions, cache_entry *cache_rules)
{ {
/* output `internal' invalid/floating-point unavailable functions /* output `internal' invalid/floating-point unavailable functions
where needed */ where needed */
@ -757,7 +758,9 @@ gen_icache_c (lf *file,
static void static void
gen_idecode_h (lf *file, gen_idecode_h (lf *file,
gen_table *gen, insn_table *insns, cache_entry *cache_rules) const gen_table *gen,
const insn_table *insns,
cache_entry *cache_rules)
{ {
lf_printf (file, "typedef uint%d_t %sinstruction_word;\n", lf_printf (file, "typedef uint%d_t %sinstruction_word;\n",
options.insn_bit_size, options.module.global.prefix.l); options.insn_bit_size, options.module.global.prefix.l);
@ -816,7 +819,9 @@ gen_idecode_h (lf *file,
static void static void
gen_idecode_c (lf *file, gen_idecode_c (lf *file,
gen_table *gen, insn_table *isa, cache_entry *cache_rules) const gen_table *gen,
const insn_table *isa,
cache_entry *cache_rules)
{ {
/* the intro */ /* the intro */
print_includes (file); print_includes (file);
@ -869,7 +874,7 @@ gen_idecode_c (lf *file,
static void static void
gen_run_c (lf *file, gen_table *gen) gen_run_c (lf *file, const gen_table *gen)
{ {
gen_list *entry; gen_list *entry;
lf_printf (file, "#include \"sim-main.h\"\n"); lf_printf (file, "#include \"sim-main.h\"\n");
@ -959,7 +964,7 @@ gen_run_c (lf *file, gen_table *gen)
/****************************************************************/ /****************************************************************/
static gen_table * static gen_table *
do_gen (insn_table *isa, decode_table *decode_rules) do_gen (const insn_table *isa, const decode_table *decode_rules)
{ {
gen_table *gen; gen_table *gen;
if (decode_rules == NULL) if (decode_rules == NULL)
@ -1185,7 +1190,7 @@ main (int argc, char **argv, char **envp)
case 'D': case 'D':
if (strcmp (optarg, "processor-names")) if (strcmp (optarg, "processor-names"))
{ {
char *processor; const char *processor;
for (processor = filter_next (options.model_filter, ""); for (processor = filter_next (options.model_filter, "");
processor != NULL; processor != NULL;
processor = filter_next (options.model_filter, processor)) processor = filter_next (options.model_filter, processor))

View File

@ -50,7 +50,7 @@ static const name_map cache_type_map[] = {
cache_entry * cache_entry *
load_cache_table (char *file_name) load_cache_table (const char *file_name)
{ {
cache_entry *cache = NULL; cache_entry *cache = NULL;
cache_entry **last = &cache; cache_entry **last = &cache;

View File

@ -63,4 +63,4 @@
new name had better be the same. */ new name had better be the same. */
extern cache_entry *load_cache_table (char *file_name); extern cache_entry *load_cache_table (const char *file_name);

View File

@ -83,7 +83,7 @@ set_bits (int bit[max_insn_bit_size], uint64_t value)
} }
decode_table * decode_table *
load_decode_table (char *file_name) load_decode_table (const char *file_name)
{ {
table *file = table_open (file_name); table *file = table_open (file_name);
table_entry *entry; table_entry *entry;
@ -284,7 +284,7 @@ load_decode_table (char *file_name)
int int
decode_table_max_word_nr (decode_table *entry) decode_table_max_word_nr (const decode_table *entry)
{ {
int max_word_nr = 0; int max_word_nr = 0;
while (entry != NULL) while (entry != NULL)
@ -303,9 +303,9 @@ decode_table_max_word_nr (decode_table *entry)
} }
static void static void
dump_decode_cond (lf *file, char *prefix, decode_cond *cond, char *suffix) dump_decode_cond (lf *file, const char *prefix, const decode_cond *cond,
const char *suffix)
{ {
lf_printf (file, "%s(decode_cond *) 0x%lx", prefix, (long) cond); lf_printf (file, "%s(decode_cond *) 0x%lx", prefix, (long) cond);
if (cond != NULL) if (cond != NULL)
@ -323,7 +323,8 @@ dump_decode_cond (lf *file, char *prefix, decode_cond *cond, char *suffix)
static void static void
dump_decode_conds (lf *file, char *prefix, decode_cond *cond, char *suffix) dump_decode_conds (lf *file, const char *prefix, const decode_cond *cond,
const char *suffix)
{ {
lf_printf (file, "%s(decode_cond *) 0x%lx", prefix, (long) cond); lf_printf (file, "%s(decode_cond *) 0x%lx", prefix, (long) cond);
while (cond != NULL) while (cond != NULL)
@ -336,7 +337,8 @@ dump_decode_conds (lf *file, char *prefix, decode_cond *cond, char *suffix)
void void
dump_decode_rule (lf *file, char *prefix, decode_table *rule, char *suffix) dump_decode_rule (lf *file, const char *prefix, const decode_table *rule,
const char *suffix)
{ {
lf_printf (file, "%s(decode_table *) 0x%lx", prefix, (long) rule); lf_printf (file, "%s(decode_table *) 0x%lx", prefix, (long) rule);
if (rule != NULL) if (rule != NULL)
@ -369,7 +371,10 @@ dump_decode_rule (lf *file, char *prefix, decode_table *rule, char *suffix)
#ifdef MAIN #ifdef MAIN
static void static void
dump_decode_rules (lf *file, char *prefix, decode_table *rule, char *suffix) dump_decode_rules (lf *file,
const char *prefix,
const decode_table *rule,
const char *suffix)
{ {
lf_printf (file, "%s", prefix); lf_printf (file, "%s", prefix);
while (rule != NULL) while (rule != NULL)

View File

@ -236,9 +236,9 @@ struct _decode_table
}; };
extern decode_table *load_decode_table (char *file_name); extern decode_table *load_decode_table (const char *file_name);
extern int decode_table_max_word_nr (decode_table *rule); extern int decode_table_max_word_nr (const decode_table *rule);
extern void dump_decode_rule extern void dump_decode_rule
(lf *file, char *prefix, decode_table *rule, char *suffix); (lf *file, const char *prefix, const decode_table *rule, const char *suffix);

View File

@ -28,7 +28,7 @@
#include "ld-insn.h" #include "ld-insn.h"
static insn_word_entry * static insn_word_entry *
parse_insn_word (line_ref *line, char *string, int word_nr) parse_insn_word (const line_ref *line, char *string, int word_nr)
{ {
char *chp; char *chp;
insn_word_entry *word = ZALLOC (insn_word_entry); insn_word_entry *word = ZALLOC (insn_word_entry);
@ -849,7 +849,7 @@ parse_insn_model_record (table *file,
/* Find the corresponding master model record for each name so /* Find the corresponding master model record for each name so
that they can be linked in. */ that they can be linked in. */
int index; int index;
char *name = ""; const char *name = "";
while (1) while (1)
{ {
name = filter_next (new_insn_model->names, name); name = filter_next (new_insn_model->names, name);
@ -938,7 +938,7 @@ parse_macro_record (table *file, table_entry *record)
insn_table * insn_table *
load_insn_table (char *file_name, cache_entry *cache) load_insn_table (const char *file_name, cache_entry *cache)
{ {
table *file = table_open (file_name); table *file = table_open (file_name);
table_entry *record = table_read (file); table_entry *record = table_read (file);
@ -1279,7 +1279,7 @@ load_insn_table (char *file_name, cache_entry *cache)
void void
print_insn_words (lf *file, insn_entry * insn) print_insn_words (lf *file, const insn_entry *insn)
{ {
insn_word_entry *word = insn->words; insn_word_entry *word = insn->words;
if (word != NULL) if (word != NULL)
@ -1359,10 +1359,10 @@ print_insn_words (lf *file, insn_entry * insn)
void void
function_entry_traverse (lf *file, function_entry_traverse (lf *file,
function_entry * functions, const function_entry *functions,
function_entry_handler * handler, void *data) function_entry_handler * handler, void *data)
{ {
function_entry *function; const function_entry *function;
for (function = functions; function != NULL; function = function->next) for (function = functions; function != NULL; function = function->next)
{ {
handler (file, function, data); handler (file, function, data);
@ -1371,10 +1371,10 @@ function_entry_traverse (lf *file,
void void
insn_table_traverse_insn (lf *file, insn_table_traverse_insn (lf *file,
insn_table *isa, const insn_table *isa,
insn_entry_handler * handler, void *data) insn_entry_handler * handler, void *data)
{ {
insn_entry *insn; const insn_entry *insn;
for (insn = isa->insns; insn != NULL; insn = insn->next) for (insn = isa->insns; insn != NULL; insn = insn->next)
{ {
handler (file, isa, insn, data); handler (file, isa, insn, data);
@ -1384,7 +1384,9 @@ insn_table_traverse_insn (lf *file,
static void static void
dump_function_entry (lf *file, dump_function_entry (lf *file,
char *prefix, function_entry * entry, char *suffix) const char *prefix,
const function_entry *entry,
const char *suffix)
{ {
lf_printf (file, "%s(function_entry *) 0x%lx", prefix, (long) entry); lf_printf (file, "%s(function_entry *) 0x%lx", prefix, (long) entry);
if (entry != NULL) if (entry != NULL)
@ -1403,7 +1405,9 @@ dump_function_entry (lf *file,
static void static void
dump_function_entries (lf *file, dump_function_entries (lf *file,
char *prefix, function_entry * entry, char *suffix) const char *prefix,
const function_entry *entry,
const char *suffix)
{ {
lf_printf (file, "%s", prefix); lf_printf (file, "%s", prefix);
lf_indent (file, +1); lf_indent (file, +1);
@ -1433,7 +1437,10 @@ cache_entry_type_to_str (cache_entry_type type)
} }
static void static void
dump_cache_entry (lf *file, char *prefix, cache_entry *entry, char *suffix) dump_cache_entry (lf *file,
const char *prefix,
const cache_entry *entry,
const char *suffix)
{ {
lf_printf (file, "%s(cache_entry *) 0x%lx", prefix, (long) entry); lf_printf (file, "%s(cache_entry *) 0x%lx", prefix, (long) entry);
if (entry != NULL) if (entry != NULL)
@ -1452,7 +1459,10 @@ dump_cache_entry (lf *file, char *prefix, cache_entry *entry, char *suffix)
} }
void void
dump_cache_entries (lf *file, char *prefix, cache_entry *entry, char *suffix) dump_cache_entries (lf *file,
const char *prefix,
const cache_entry *entry,
const char *suffix)
{ {
lf_printf (file, "%s", prefix); lf_printf (file, "%s", prefix);
lf_indent (file, +1); lf_indent (file, +1);
@ -1466,7 +1476,10 @@ dump_cache_entries (lf *file, char *prefix, cache_entry *entry, char *suffix)
} }
static void static void
dump_model_data (lf *file, char *prefix, model_data *entry, char *suffix) dump_model_data (lf *file,
const char *prefix,
const model_data *entry,
const char *suffix)
{ {
lf_printf (file, "%s(model_data *) 0x%lx", prefix, (long) entry); lf_printf (file, "%s(model_data *) 0x%lx", prefix, (long) entry);
if (entry != NULL) if (entry != NULL)
@ -1483,7 +1496,10 @@ dump_model_data (lf *file, char *prefix, model_data *entry, char *suffix)
} }
static void static void
dump_model_datas (lf *file, char *prefix, model_data *entry, char *suffix) dump_model_datas (lf *file,
const char *prefix,
const model_data *entry,
const char *suffix)
{ {
lf_printf (file, "%s", prefix); lf_printf (file, "%s", prefix);
lf_indent (file, +1); lf_indent (file, +1);
@ -1497,7 +1513,10 @@ dump_model_datas (lf *file, char *prefix, model_data *entry, char *suffix)
} }
static void static void
dump_model_entry (lf *file, char *prefix, model_entry *entry, char *suffix) dump_model_entry (lf *file,
const char *prefix,
const model_entry *entry,
const char *suffix)
{ {
lf_printf (file, "%s(model_entry *) 0x%lx", prefix, (long) entry); lf_printf (file, "%s(model_entry *) 0x%lx", prefix, (long) entry);
if (entry != NULL) if (entry != NULL)
@ -1515,7 +1534,10 @@ dump_model_entry (lf *file, char *prefix, model_entry *entry, char *suffix)
} }
static void static void
dump_model_entries (lf *file, char *prefix, model_entry *entry, char *suffix) dump_model_entries (lf *file,
const char *prefix,
const model_entry *entry,
const char *suffix)
{ {
lf_printf (file, "%s", prefix); lf_printf (file, "%s", prefix);
lf_indent (file, +1); lf_indent (file, +1);
@ -1530,7 +1552,10 @@ dump_model_entries (lf *file, char *prefix, model_entry *entry, char *suffix)
static void static void
dump_model_table (lf *file, char *prefix, model_table *entry, char *suffix) dump_model_table (lf *file,
const char *prefix,
const model_table *entry,
const char *suffix)
{ {
lf_printf (file, "%s(model_table *) 0x%lx", prefix, (long) entry); lf_printf (file, "%s(model_table *) 0x%lx", prefix, (long) entry);
if (entry != NULL) if (entry != NULL)
@ -1573,7 +1598,9 @@ insn_field_type_to_str (insn_field_type type)
void void
dump_insn_field (lf *file, dump_insn_field (lf *file,
char *prefix, insn_field_entry *field, char *suffix) const char *prefix,
const insn_field_entry *field,
const char *suffix)
{ {
char *sep = " "; char *sep = " ";
lf_printf (file, "%s(insn_field_entry *) 0x%lx", prefix, (long) field); lf_printf (file, "%s(insn_field_entry *) 0x%lx", prefix, (long) field);
@ -1612,7 +1639,9 @@ dump_insn_field (lf *file,
void void
dump_insn_word_entry (lf *file, dump_insn_word_entry (lf *file,
char *prefix, insn_word_entry *word, char *suffix) const char *prefix,
const insn_word_entry *word,
const char *suffix)
{ {
lf_printf (file, "%s(insn_word_entry *) 0x%lx", prefix, (long) word); lf_printf (file, "%s(insn_word_entry *) 0x%lx", prefix, (long) word);
if (word != NULL) if (word != NULL)
@ -1639,7 +1668,9 @@ dump_insn_word_entry (lf *file,
static void static void
dump_insn_word_entries (lf *file, dump_insn_word_entries (lf *file,
char *prefix, insn_word_entry *word, char *suffix) const char *prefix,
const insn_word_entry *word,
const char *suffix)
{ {
lf_printf (file, "%s", prefix); lf_printf (file, "%s", prefix);
while (word != NULL) while (word != NULL)
@ -1652,7 +1683,9 @@ dump_insn_word_entries (lf *file,
static void static void
dump_insn_model_entry (lf *file, dump_insn_model_entry (lf *file,
char *prefix, insn_model_entry *model, char *suffix) const char *prefix,
const insn_model_entry *model,
const char *suffix)
{ {
lf_printf (file, "%s(insn_model_entry *) 0x%lx", prefix, (long) model); lf_printf (file, "%s(insn_model_entry *) 0x%lx", prefix, (long) model);
if (model != NULL) if (model != NULL)
@ -1672,7 +1705,9 @@ dump_insn_model_entry (lf *file,
static void static void
dump_insn_model_entries (lf *file, dump_insn_model_entries (lf *file,
char *prefix, insn_model_entry *model, char *suffix) const char *prefix,
const insn_model_entry *model,
const char *suffix)
{ {
lf_printf (file, "%s", prefix); lf_printf (file, "%s", prefix);
while (model != NULL) while (model != NULL)
@ -1686,8 +1721,9 @@ dump_insn_model_entries (lf *file,
static void static void
dump_insn_mnemonic_entry (lf *file, dump_insn_mnemonic_entry (lf *file,
char *prefix, const char *prefix,
insn_mnemonic_entry *mnemonic, char *suffix) const insn_mnemonic_entry *mnemonic,
const char *suffix)
{ {
lf_printf (file, "%s(insn_mnemonic_entry *) 0x%lx", prefix, lf_printf (file, "%s(insn_mnemonic_entry *) 0x%lx", prefix,
(long) mnemonic); (long) mnemonic);
@ -1708,8 +1744,9 @@ dump_insn_mnemonic_entry (lf *file,
static void static void
dump_insn_mnemonic_entries (lf *file, dump_insn_mnemonic_entries (lf *file,
char *prefix, const char *prefix,
insn_mnemonic_entry *mnemonic, char *suffix) const insn_mnemonic_entry *mnemonic,
const char *suffix)
{ {
lf_printf (file, "%s", prefix); lf_printf (file, "%s", prefix);
while (mnemonic != NULL) while (mnemonic != NULL)
@ -1721,7 +1758,10 @@ dump_insn_mnemonic_entries (lf *file,
} }
void void
dump_insn_entry (lf *file, char *prefix, insn_entry * entry, char *suffix) dump_insn_entry (lf *file,
const char *prefix,
const insn_entry *entry,
const char *suffix)
{ {
lf_printf (file, "%s(insn_entry *) 0x%lx", prefix, (long) entry); lf_printf (file, "%s(insn_entry *) 0x%lx", prefix, (long) entry);
if (entry != NULL) if (entry != NULL)
@ -1757,7 +1797,10 @@ dump_insn_entry (lf *file, char *prefix, insn_entry * entry, char *suffix)
} }
static void static void
dump_insn_entries (lf *file, char *prefix, insn_entry * entry, char *suffix) dump_insn_entries (lf *file,
const char *prefix,
const insn_entry *entry,
const char *suffix)
{ {
lf_printf (file, "%s", prefix); lf_printf (file, "%s", prefix);
lf_indent (file, +1); lf_indent (file, +1);
@ -1771,9 +1814,11 @@ dump_insn_entries (lf *file, char *prefix, insn_entry * entry, char *suffix)
} }
void void
dump_insn_table (lf *file, char *prefix, insn_table *isa, char *suffix) dump_insn_table (lf *file,
const char *prefix,
const insn_table *isa,
const char *suffix)
{ {
lf_printf (file, "%s(insn_table *) 0x%lx", prefix, (long) isa); lf_printf (file, "%s(insn_table *) 0x%lx", prefix, (long) isa);
if (isa != NULL) if (isa != NULL)

View File

@ -219,11 +219,12 @@ struct _function_entry
typedef void function_entry_handler typedef void function_entry_handler
(lf *file, function_entry * function, void *data); (lf *file, const function_entry *function, void *data);
extern void function_entry_traverse extern void function_entry_traverse
(lf *file, (lf *file,
function_entry * functions, function_entry_handler * handler, void *data); const function_entry *functions,
function_entry_handler * handler, void *data);
/* cache-macro: /* cache-macro:
@ -670,37 +671,37 @@ struct _insn_table
filter *flags; filter *flags;
}; };
extern insn_table *load_insn_table (char *file_name, cache_entry *cache); extern insn_table *load_insn_table (const char *file_name, cache_entry *cache);
typedef void insn_entry_handler typedef void insn_entry_handler
(lf *file, insn_table *isa, insn_entry * insn, void *data); (lf *file, const insn_table *isa, const insn_entry *insn, void *data);
extern void insn_table_traverse_insn extern void insn_table_traverse_insn
(lf *file, insn_table *isa, insn_entry_handler * handler, void *data); (lf *file, const insn_table *isa, insn_entry_handler *handler, void *data);
/* Printing */ /* Printing */
extern void print_insn_words (lf *file, insn_entry * insn); extern void print_insn_words (lf *file, const insn_entry *insn);
/* Debugging */ /* Debugging */
void void dump_insn_field
dump_insn_field (lf *file, const char *prefix, const insn_field_entry *field,
(lf *file, char *prefix, insn_field_entry *field, char *suffix); const char *suffix);
void void dump_insn_word_entry
dump_insn_word_entry (lf *file, const char *prefix, const insn_word_entry *word,
(lf *file, char *prefix, insn_word_entry *word, char *suffix); const char *suffix);
void void dump_insn_entry
dump_insn_entry (lf *file, char *prefix, insn_entry * insn, char *suffix); (lf *file, const char *prefix, const insn_entry *insn, const char *suffix);
void void dump_cache_entries
dump_cache_entries (lf *file, const char *prefix, const cache_entry *entry, const char *suffix);
(lf *file, char *prefix, cache_entry *entry, char *suffix);
void dump_insn_table (lf *file, char *prefix, insn_table *isa, char *suffix); void dump_insn_table
(lf *file, const char *prefix, const insn_table *isa, const char *suffix);

View File

@ -45,8 +45,8 @@ struct _lf
lf * lf *
lf_open (char *name, lf_open (const char *name,
char *real_name, const char *real_name,
lf_file_references references, lf_file_references references,
lf_file_type type, const char *program) lf_file_type type, const char *program)
{ {
@ -205,7 +205,7 @@ lf_printf (lf *file, const char *fmt, ...)
int int
lf_print__line_ref (lf *file, line_ref *line) lf_print__line_ref (lf *file, const line_ref *line)
{ {
return lf_print__external_ref (file, line->line_nr, line->file_name); return lf_print__external_ref (file, line->line_nr, line->file_name);
} }

View File

@ -49,8 +49,8 @@ lf_file_references;
the print messages below. */ the print messages below. */
extern lf *lf_open extern lf *lf_open
(char *name, (const char *name,
char *real_name, const char *real_name,
lf_file_references file_references, lf_file_references file_references,
lf_file_type type, const char *program); lf_file_type type, const char *program);
@ -101,7 +101,7 @@ extern int lf_print__internal_ref (lf *file);
extern int lf_print__external_ref extern int lf_print__external_ref
(lf *file, int line_nr, const char *file_name); (lf *file, int line_nr, const char *file_name);
extern int lf_print__line_ref (lf *file, line_ref *line); extern int lf_print__line_ref (lf *file, const line_ref *line);
extern int lf_print__ucase_filename (lf *file); extern int lf_print__ucase_filename (lf *file);

View File

@ -34,7 +34,7 @@
trailing '\n' */ trailing '\n' */
void void
error (const line_ref *line, char *msg, ...) error (const line_ref *line, const char *msg, ...)
{ {
va_list ap; va_list ap;
if (line != NULL) if (line != NULL)
@ -46,7 +46,7 @@ error (const line_ref *line, char *msg, ...)
} }
void void
warning (const line_ref *line, char *msg, ...) warning (const line_ref *line, const char *msg, ...)
{ {
va_list ap; va_list ap;
if (line != NULL) if (line != NULL)
@ -57,7 +57,7 @@ warning (const line_ref *line, char *msg, ...)
} }
void void
notify (const line_ref *line, char *msg, ...) notify (const line_ref *line, const char *msg, ...)
{ {
va_list ap; va_list ap;
if (line != NULL) if (line != NULL)

View File

@ -52,7 +52,7 @@ struct _line_ref
}; };
/* Error appends a new line, warning and notify do not */ /* Error appends a new line, warning and notify do not */
typedef void error_func (const line_ref *line, char *msg, ...); typedef void error_func (const line_ref *line, const char *msg, ...);
extern error_func error; extern error_func error;
extern error_func warning; extern error_func warning;

View File

@ -80,7 +80,9 @@ set_nr_table_entry_fields (table_entry *entry, int nr_fields)
void void
table_push (table *root, table_push (table *root,
line_ref *line, table_include *includes, const char *file_name) const line_ref *line,
table_include *includes,
const char *file_name)
{ {
FILE *ff; FILE *ff;
open_table *file; open_table *file;
@ -485,7 +487,7 @@ table_read (table *root)
} }
extern void extern void
table_print_code (lf *file, table_entry *entry) table_print_code (lf *file, const table_entry *entry)
{ {
int field_nr; int field_nr;
int nr = 0; int nr = 0;
@ -528,9 +530,11 @@ table_print_code (lf *file, table_entry *entry)
} }
void void
dump_line_ref (lf *file, char *prefix, const line_ref *line, char *suffix) dump_line_ref (lf *file,
const char *prefix,
const line_ref *line,
const char *suffix)
{ {
lf_printf (file, "%s(line_ref*) 0x%lx", prefix, (long) line); lf_printf (file, "%s(line_ref*) 0x%lx", prefix, (long) line);
if (line != NULL) if (line != NULL)
@ -559,7 +563,9 @@ table_entry_type_to_str (table_entry_type type)
void void
dump_table_entry (lf *file, dump_table_entry (lf *file,
char *prefix, const table_entry *entry, char *suffix) const char *prefix,
const table_entry *entry,
const char *suffix)
{ {
lf_printf (file, "%s(table_entry*) 0x%lx", prefix, (long) entry); lf_printf (file, "%s(table_entry*) 0x%lx", prefix, (long) entry);
if (entry != NULL) if (entry != NULL)

View File

@ -102,7 +102,8 @@ extern table_entry *table_read (table *file);
the end of FILE_NAME is reached, return to the pushed file */ the end of FILE_NAME is reached, return to the pushed file */
extern void table_push extern void table_push
(table *file, line_ref *line, table_include *search, const char *file_name); (table *file, const line_ref *line, table_include *search,
const char *file_name);
/* Expand the specified field_nr using the internal expansion table. /* Expand the specified field_nr using the internal expansion table.
@ -115,16 +116,16 @@ extern void table_expand_field (table_entry *entry, int field_nr);
leading/trailing braces were striped as part of the read, they are leading/trailing braces were striped as part of the read, they are
not written. */ not written. */
extern void table_print_code (lf *file, table_entry *entry); extern void table_print_code (lf *file, const table_entry *entry);
/* Debugging */ /* Debugging */
extern void dump_line_ref extern void dump_line_ref
(lf *file, char *prefix, const line_ref *line, char *suffix); (lf *file, const char *prefix, const line_ref *line, const char *suffix);
extern void dump_table_entry extern void dump_table_entry
(lf *file, char *prefix, const table_entry *entry, char *suffix); (lf *file, const char *prefix, const table_entry *entry, const char *suffix);