1 /* This file is part of the program psim.
3 Copyright (C) 1994,1995,1996, Andrew Cagney <cagney@highland.com.au>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
41 static const name_map cache_type_map
[] = {
42 { "cache", cache_value
},
43 { "compute", compute_value
},
44 { "scratch", scratch_value
},
50 load_cache_table(char *file_name
,
53 table
*file
= table_open(file_name
, nr_cache_rule_fields
, 0);
55 cache_table
*table
= NULL
;
56 cache_table
**curr_rule
= &table
;
57 while ((entry
= table_entry_read(file
)) != NULL
) {
58 cache_table
*new_rule
= ZALLOC(cache_table
);
59 new_rule
->type
= name2i(entry
->fields
[ca_type
], cache_type_map
);
60 new_rule
->field_name
= entry
->fields
[ca_field_name
];
61 new_rule
->derived_name
= entry
->fields
[ca_derived_name
];
62 new_rule
->type_def
= (strlen(entry
->fields
[ca_type_def
])
63 ? entry
->fields
[ca_type_def
]
65 new_rule
->expression
= (strlen(entry
->fields
[ca_expression
]) > 0
66 ? entry
->fields
[ca_expression
]
68 new_rule
->file_entry
= entry
;
69 *curr_rule
= new_rule
;
70 curr_rule
= &new_rule
->next
;
80 dump_cache_rule(cache_table
* rule
,
83 dumpf(indent
, "((cache_table*)0x%x\n", rule
);
84 dumpf(indent
, " (type %s)\n", i2name(rule
->type
, cache_type_map
));
85 dumpf(indent
, " (field_name \"%s\")\n", rule
->field_name
);
86 dumpf(indent
, " (derived_name \"%s\")\n", rule
->derived_name
);
87 dumpf(indent
, " (type-def \"%s\")\n", rule
->type_def
);
88 dumpf(indent
, " (expression \"%s\")\n", rule
->expression
);
89 dumpf(indent
, " (next 0x%x)\n", rule
->next
);
90 dumpf(indent
, " )\n");
95 dump_cache_rules(cache_table
* rule
,
99 dump_cache_rule(rule
, indent
);
106 main(int argc
, char **argv
)
110 error("Usage: cache <cache-file> <hi-bit-nr>\n");
111 rules
= load_cache_table(argv
[1], a2i(argv
[2]));
112 dump_cache_rules(rules
, 0);