aboutsummaryrefslogtreecommitdiff
path: root/sim/igen
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>1997-10-28 07:10:36 +0000
committerAndrew Cagney <cagney@redhat.com>1997-10-28 07:10:36 +0000
commit89d0973831b0930f621b6a5e666760dc1b684ed6 (patch)
treeaeaf421b01cede9545fd16def02fbb43791cfbbe /sim/igen
parent336ffb472ff4360cb127149e9517abf51b123e04 (diff)
downloadgdb-89d0973831b0930f621b6a5e666760dc1b684ed6.zip
gdb-89d0973831b0930f621b6a5e666760dc1b684ed6.tar.gz
gdb-89d0973831b0930f621b6a5e666760dc1b684ed6.tar.bz2
Add support for 16 byte quantities to sim-endian macro H2T.
Add model-filter field to option, include, model anf function igen records
Diffstat (limited to 'sim/igen')
-rw-r--r--sim/igen/ChangeLog28
-rw-r--r--sim/igen/ld-insn.h77
2 files changed, 78 insertions, 27 deletions
diff --git a/sim/igen/ChangeLog b/sim/igen/ChangeLog
index b535133..200e1e0 100644
--- a/sim/igen/ChangeLog
+++ b/sim/igen/ChangeLog
@@ -1,3 +1,31 @@
+Tue Oct 28 10:50:35 1997 Andrew Cagney <cagney@b1.cygnus.com>
+
+ * gen-icache.c (print_icache_extraction): Force result of atol to
+ unsigned.
+
+ * ld-insn.c (parse_function_record): Separate handling of old and
+ ney fynction records.
+ (load_insn_table): For %s record, hack function name & type after
+ it has been parsed.
+
+ * filter.h (filter_is_subset): Reverse argument names, wrong
+ order.
+
+ * ld-insn.c (load_insn_table): Move include code to.
+ (parse_include_record): New function. Check for filtering of
+ include statement by both flags and models.
+ (load_insn_table): Check for model filtering of cache and model
+ records.
+ (parse_model_data_record): Check for model & flag filtering of
+ model data records.
+ (parse_function_record): Check for model & flag filtering of
+ function records.
+
+ * ld-insn.h: Define record_filter_models_field. Add filter-models
+ field to all but instruction records.
+ (struct _function_entry, struct _cache_entry): Add models field.
+ (nr_function_fields): Make parm field mandatory.
+
Mon Oct 27 15:14:26 1997 Andrew Cagney <cagney@b1.cygnus.com>
* igen.c (main): Change -I option to -I<directory>. Add optional
diff --git a/sim/igen/ld-insn.h b/sim/igen/ld-insn.h
index be6f4be..e5bec1d 100644
--- a/sim/igen/ld-insn.h
+++ b/sim/igen/ld-insn.h
@@ -25,12 +25,21 @@ typedef unsigned64 insn_uint;
/* Common among most entries:
+ All non instruction records have the format:
+
+ <...> ::=
+ ":" <record-name>
+ ":" <filter-flags>
+ ":" <filter-models>
+ ":" ...
+
*/
enum {
record_type_field = 1,
old_record_type_field = 2,
record_filter_flags_field = 2,
+ record_filter_models_field = 3,
};
@@ -41,6 +50,7 @@ enum {
<include> ::=
":" "include"
":" <filter-flags>
+ ":" <filter-models>
":" <filename>
<nl>
;
@@ -48,8 +58,8 @@ enum {
*/
enum {
- include_record_filename_field = 3,
- nr_include_record_fields = 4,
+ include_filename_field = 4,
+ nr_include_fields,
};
@@ -62,6 +72,7 @@ enum {
<option> ::=
":" "option"
":" <filter-flags>
+ ":" <filter-models>
":" <option-name>
":" <option-value>
<nl>
@@ -89,9 +100,9 @@ enum {
enum {
- option_name_field = 3,
- option_value_field = 4,
- nr_option_fields = 5,
+ option_name_field = 4,
+ option_value_field,
+ nr_option_fields,
};
@@ -100,9 +111,9 @@ enum {
<insn-macro> ::=
<expression>
- ":" "define"
+ ":" ( "define" | "undef" )
":" <filter-flags>
- ":"
+ ":" <filter-models>
":" <name>
<nl>
;
@@ -122,8 +133,14 @@ enum {
<function-spec>
;
+ <format> ::=
+ ":" ( "%s" | ... )
+ <function-spec>
+ ;
+
<function-spec> ::=
":" <filter-flags>
+ ":" <filter-models>
":" <typedef>
":" <name>
[ ":" <parameter-list> ]
@@ -134,10 +151,10 @@ enum {
*/
enum {
- function_typedef_field = 3,
- function_name_field = 4,
- function_param_field = 5,
- nr_function_fields = 5,
+ function_typedef_field = 4,
+ function_name_field,
+ function_param_field,
+ nr_function_fields,
};
enum {
@@ -145,7 +162,7 @@ enum {
old_function_type_field = 2,
old_function_name_field = 4,
old_function_param_field = 5,
- nr_old_function_fields = 6,
+ nr_old_function_fields = 5, /* parameter-list is optional */
};
@@ -153,6 +170,7 @@ typedef struct _function_entry function_entry;
struct _function_entry {
line_ref *line;
filter *flags;
+ filter *models;
char *type;
char *name;
char *param;
@@ -179,7 +197,8 @@ extern void function_entry_traverse
<cache-macro> ::=
":" <macro-type>
":" <filter-flags>
- ":" <type>
+ ":" <filter-models>
+ ":" <typedef>
":" <name>
":" <field-name> { "," <field-name> }
":" <expression>
@@ -208,11 +227,11 @@ extern void function_entry_traverse
*/
enum {
- cache_type_field = 3,
- cache_name_field = 4,
- cache_original_fields_field = 5,
- cache_expression_field = 6,
- nr_cache_fields = 7,
+ cache_typedef_field = 4,
+ cache_name_field,
+ cache_original_fields_field,
+ cache_expression_field,
+ nr_cache_fields,
};
typedef enum {
@@ -225,6 +244,7 @@ typedef struct _cache_entry cache_entry;
struct _cache_entry {
line_ref *line;
filter *flags;
+ filter *models;
cache_entry_type entry_type;
char *name;
filter *original_fields;
@@ -240,6 +260,7 @@ struct _cache_entry {
<model-processor> ::=
":" "model"
":" <filter-flags>
+ ":" <filter-models>
":" <processor>
":" <long-processor>
":" <function-unit-data>
@@ -249,6 +270,7 @@ struct _cache_entry {
<model-macro> ::=
":" "model-macro"
":" <filter-flags>
+ ":" <filter-models>
<nl>
<code-block>
;
@@ -256,6 +278,7 @@ struct _cache_entry {
<model-data> ::=
":" "model-data"
":" <filter-flags>
+ ":" <filter-models>
<nl>
<code-block>
;
@@ -278,11 +301,11 @@ struct _cache_entry {
*/
enum {
- nr_model_macro_fields = 3,
- nr_model_data_fields = 3,
- nr_model_static_fields = 6,
- nr_model_internal_fields = 6,
- nr_model_function_fields = 6,
+ nr_model_macro_fields = 4,
+ nr_model_data_fields = 4,
+ nr_model_static_fields = nr_function_fields,
+ nr_model_internal_fields = nr_function_fields,
+ nr_model_function_fields = nr_function_fields,
};
typedef struct _model_data model_data;
@@ -295,10 +318,10 @@ struct _model_data {
};
enum {
- model_name_field = 3,
- model_full_name_field = 4,
- model_unit_data_field = 5,
- nr_model_processor_fields = 6,
+ model_name_field = 4,
+ model_full_name_field,
+ model_unit_data_field,
+ nr_model_processor_fields,
};
typedef struct _model_entry model_entry;