X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=sim%2Figen%2Fld-insn.h;h=e7ddd61a65fb16a79ef92b7b7101f51b757865bc;hb=00923338dec84505addaf9cdeca2e9c844757824;hp=5f9d240bd561e68b1cef4c3f2bbdbd481fe849b2;hpb=d0352a18a504a4e7b761f6b3264cf11347d8d056;p=deliverable%2Fbinutils-gdb.git diff --git a/sim/igen/ld-insn.h b/sim/igen/ld-insn.h index 5f9d240bd5..e7ddd61a65 100644 --- a/sim/igen/ld-insn.h +++ b/sim/igen/ld-insn.h @@ -1,22 +1,23 @@ -/* This file is part of the program psim. +/* The IGEN simulator generator for GDB, the GNU Debugger. - Copyright (C) 1994-1998 Andrew Cagney + Copyright 2002-2015 Free Software Foundation, Inc. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + Contributed by Andrew Cagney. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - */ + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ @@ -35,7 +36,8 @@ typedef unsigned64 insn_uint; */ -enum { +enum +{ record_type_field = 1, old_record_type_field = 2, record_filter_flags_field = 2, @@ -57,7 +59,8 @@ enum { */ -enum { +enum +{ include_filename_field = 4, nr_include_fields, }; @@ -96,10 +99,11 @@ enum { ; - These update the global options structure. */ + These update the global options structure. */ -enum { +enum +{ option_name_field = 4, option_value_field, nr_option_fields, @@ -126,7 +130,8 @@ enum { */ -enum { +enum +{ macro_name_field = 4, macro_args_field, macro_expr_field, @@ -174,29 +179,33 @@ enum { */ -enum { +enum +{ function_typedef_field = 4, function_name_field, function_param_field, nr_function_fields, }; -enum { +enum +{ function_model_name_field = 0, nr_function_model_fields = 1, }; -enum { +enum +{ old_function_typedef_field = 0, old_function_type_field = 2, old_function_name_field = 4, old_function_param_field = 5, - nr_old_function_fields = 5, /* parameter-list is optional */ + nr_old_function_fields = 5, /* parameter-list is optional */ }; typedef struct _function_entry function_entry; -struct _function_entry { +struct _function_entry +{ line_ref *line; filter *flags; filter *models; @@ -210,15 +219,11 @@ struct _function_entry { typedef void function_entry_handler -(lf *file, - function_entry *function, - void *data); + (lf *file, function_entry * function, void *data); extern void function_entry_traverse -(lf *file, - function_entry *functions, - function_entry_handler *handler, - void *data); + (lf *file, + function_entry * functions, function_entry_handler * handler, void *data); /* cache-macro: @@ -255,7 +260,8 @@ extern void function_entry_traverse */ -enum { +enum +{ cache_typedef_field = 4, cache_name_field, cache_original_fields_field, @@ -263,14 +269,17 @@ enum { nr_cache_fields, }; -typedef enum { +typedef enum +{ scratch_value, cache_value, compute_value, -} cache_entry_type; +} +cache_entry_type; typedef struct _cache_entry cache_entry; -struct _cache_entry { +struct _cache_entry +{ line_ref *line; filter *flags; filter *models; @@ -329,7 +338,8 @@ struct _cache_entry { */ -enum { +enum +{ nr_model_macro_fields = 4, nr_model_data_fields = 4, nr_model_static_fields = nr_function_fields, @@ -338,7 +348,8 @@ enum { }; typedef struct _model_data model_data; -struct _model_data { +struct _model_data +{ line_ref *line; filter *flags; table_entry *entry; @@ -346,7 +357,8 @@ struct _model_data { model_data *next; }; -enum { +enum +{ model_name_field = 4, model_full_name_field, model_unit_data_field, @@ -354,7 +366,8 @@ enum { }; typedef struct _model_entry model_entry; -struct _model_entry { +struct _model_entry +{ line_ref *line; filter *flags; char *name; @@ -365,7 +378,8 @@ struct _model_entry { typedef struct _model_table model_table; -struct _model_table { +struct _model_table +{ filter *processors; int nr_models; model_entry *models; @@ -407,16 +421,21 @@ struct _model_table { */ -typedef enum _insn_field_cond_type { +typedef enum _insn_field_cond_type +{ insn_field_cond_value, insn_field_cond_field, -} insn_field_cond_type; -typedef enum _insn_field_cond_test { +} +insn_field_cond_type; +typedef enum _insn_field_cond_test +{ insn_field_cond_eq, insn_field_cond_ne, -} insn_field_cond_test; +} +insn_field_cond_test; typedef struct _insn_field_cond insn_field_cond; -struct _insn_field_cond { +struct _insn_field_cond +{ insn_field_cond_type type; insn_field_cond_test test; insn_uint value; @@ -426,16 +445,19 @@ struct _insn_field_cond { }; -typedef enum _insn_field_type { +typedef enum _insn_field_type +{ insn_field_invalid, insn_field_int, insn_field_reserved, insn_field_wild, insn_field_string, -} insn_field_type; +} +insn_field_type; typedef struct _insn_field_entry insn_field_entry; -struct _insn_field_entry { +struct _insn_field_entry +{ int first; int last; int width; @@ -450,7 +472,8 @@ struct _insn_field_entry { }; typedef struct _insn_bit_entry insn_bit_entry; -struct _insn_bit_entry { +struct _insn_bit_entry +{ int value; int mask; insn_field_entry *field; @@ -459,10 +482,11 @@ struct _insn_bit_entry { -typedef struct _insn_entry insn_entry; /* forward */ +typedef struct _insn_entry insn_entry; /* forward */ typedef struct _insn_word_entry insn_word_entry; -struct _insn_word_entry { +struct _insn_word_entry +{ /* list of sub-fields making up the instruction. bit provides faster access to the field data for bit N. */ insn_field_entry *first; @@ -496,14 +520,16 @@ struct _insn_word_entry { */ -enum { +enum +{ insn_model_name_field = 0, insn_model_unit_data_field = 1, nr_insn_model_fields = 1, }; typedef struct _insn_model_entry insn_model_entry; -struct _insn_model_entry { +struct _insn_model_entry +{ line_ref *line; insn_entry *insn; filter *names; @@ -551,14 +577,16 @@ struct _insn_model_entry { */ -enum { +enum +{ insn_mnemonic_format_field = 0, insn_mnemonic_condition_field = 1, nr_insn_mnemonic_fields = 1, }; typedef struct _insn_mnemonic_entry insn_mnemonic_entry; -struct _insn_mnemonic_entry { +struct _insn_mnemonic_entry +{ line_ref *line; insn_entry *insn; char *format; @@ -583,7 +611,8 @@ struct _insn_mnemonic_entry { */ -enum { +enum +{ insn_word_field = 0, insn_format_name_field = 1, insn_filter_flags_field = 2, @@ -594,9 +623,10 @@ enum { /* typedef struct _insn_entry insn_entry; */ -struct _insn_entry { +struct _insn_entry +{ line_ref *line; - filter *flags; /* filtered by options.filters */ + filter *flags; /* filtered by options.filters */ char *format_name; filter *options; char *name; @@ -627,7 +657,8 @@ struct _insn_entry { */ typedef struct _insn_table insn_table; -struct _insn_table { +struct _insn_table +{ cache_entry *caches; int max_nr_words; int nr_insns; @@ -639,65 +670,37 @@ struct _insn_table { filter *flags; }; -extern insn_table *load_insn_table -(char *file_name, - cache_entry *cache); +extern insn_table *load_insn_table (char *file_name, cache_entry *cache); typedef void insn_entry_handler -(lf *file, - insn_table *isa, - insn_entry *insn, - void *data); + (lf *file, insn_table *isa, insn_entry * insn, void *data); extern void insn_table_traverse_insn -(lf *file, - insn_table *isa, - insn_entry_handler *handler, - void *data); + (lf *file, insn_table *isa, insn_entry_handler * handler, void *data); /* Printing */ -extern void print_insn_words -(lf *file, - insn_entry *insn); +extern void print_insn_words (lf *file, insn_entry * insn); /* Debugging */ void -dump_insn_field -(lf *file, - char *prefix, - insn_field_entry *field, - char *suffix); + dump_insn_field + (lf *file, char *prefix, insn_field_entry *field, char *suffix); void -dump_insn_word_entry -(lf *file, - char *prefix, - insn_word_entry *word, - char *suffix); + dump_insn_word_entry + (lf *file, char *prefix, insn_word_entry *word, char *suffix); void -dump_insn_entry -(lf *file, - char *prefix, - insn_entry *insn, - char *suffix); + dump_insn_entry (lf *file, char *prefix, insn_entry * insn, char *suffix); void -dump_cache_entries -(lf *file, - char *prefix, - cache_entry *entry, - char *suffix); + dump_cache_entries + (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, char *prefix, insn_table *isa, char *suffix);