| /* This file is part of the program psim. |
| |
| Copyright (C) 1994-1997 Andrew Cagney <cagney@highland.com.au> |
| |
| 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/>. |
| |
| */ |
| |
| |
| |
| /* Output code to manipulate the instruction cache: either create it |
| or reference it */ |
| |
| typedef enum { |
| declare_variables, |
| define_variables, |
| undef_variables, |
| } icache_decl_type; |
| |
| typedef enum { |
| do_not_use_icache = 0, |
| get_values_from_icache = 0x1, |
| put_values_in_icache = 0x2, |
| both_values_and_icache = 0x3, |
| } icache_body_type; |
| |
| extern void print_icache_body |
| (lf *file, |
| insn *instruction, |
| insn_bits *expanded_bits, |
| cache_table *cache_rules, |
| icache_decl_type what_to_declare, |
| icache_body_type what_to_do); |
| |
| |
| /* Output an instruction cache decode function */ |
| |
| extern insn_handler print_icache_declaration; |
| extern insn_handler print_icache_definition; |
| |
| |
| /* Output an instruction cache support function */ |
| |
| extern function_handler print_icache_internal_function_declaration; |
| extern function_handler print_icache_internal_function_definition; |
| |
| |
| /* Output the instruction cache table data structure */ |
| |
| extern void print_icache_struct |
| (insn_table *instructions, |
| cache_table *cache_rules, |
| lf *file); |
| |
| |
| /* Output a single instructions decoder */ |