-/* This file is part of the program psim.
+/* The IGEN simulator generator for GDB, the GNU Debugger.
- Copyright (C) 1994-1998 Andrew Cagney <cagney@highland.com.au>
+ Copyright 2002, 2007 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 <http://www.gnu.org/licenses/>. */
*/
-enum {
+enum
+{
record_type_field = 1,
old_record_type_field = 2,
record_filter_flags_field = 2,
*/
-enum {
+enum
+{
include_filename_field = 4,
nr_include_fields,
};
;
- These update the global options structure. */
+ These update the global options structure. */
-enum {
+enum
+{
option_name_field = 4,
option_value_field,
nr_option_fields,
*/
-enum {
+enum
+{
macro_name_field = 4,
macro_args_field,
macro_expr_field,
*/
-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;
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:
*/
-enum {
+enum
+{
cache_typedef_field = 4,
cache_name_field,
cache_original_fields_field,
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;
*/
-enum {
+enum
+{
nr_model_macro_fields = 4,
nr_model_data_fields = 4,
nr_model_static_fields = nr_function_fields,
};
typedef struct _model_data model_data;
-struct _model_data {
+struct _model_data
+{
line_ref *line;
filter *flags;
table_entry *entry;
model_data *next;
};
-enum {
+enum
+{
model_name_field = 4,
model_full_name_field,
model_unit_data_field,
};
typedef struct _model_entry model_entry;
-struct _model_entry {
+struct _model_entry
+{
line_ref *line;
filter *flags;
char *name;
typedef struct _model_table model_table;
-struct _model_table {
+struct _model_table
+{
filter *processors;
int nr_models;
model_entry *models;
*/
-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;
};
-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;
};
typedef struct _insn_bit_entry insn_bit_entry;
-struct _insn_bit_entry {
+struct _insn_bit_entry
+{
int value;
int mask;
insn_field_entry *field;
-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;
*/
-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;
*/
-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;
*/
-enum {
+enum
+{
insn_word_field = 0,
insn_format_name_field = 1,
insn_filter_flags_field = 2,
/* 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;
*/
typedef struct _insn_table insn_table;
-struct _insn_table {
+struct _insn_table
+{
cache_entry *caches;
int max_nr_words;
int nr_insns;
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);